test-results-reporter / parser

Parse test results from JUnit, TestNG, xUnit and many more
https://www.testbeats.com
MIT License
12 stars 9 forks source link

Add support NUnit XML format #38

Closed bryanbcook closed 10 months ago

bryanbcook commented 10 months ago

Addresses #4

The formats for test-suites and test-case between V2 and V3 are similar, but have some structural and summary differences.

V2:

<test-results total="n" errors="n" failures="n" not-run="n" inconclusive="n" ignored="n" skipped="n" invalid="n">
  <test-suite type="Assembly" name="/full/path/to/assembly.dll">
    <results>
      <test-suite type="Namespace" name"="NamespaceName" >
        <results>
          <test-suite type="TextFixture" name="ClassName">
             <categories>
              <category name="..." value="..." />
             </categories>
             <properties>
               <property name="..." value=".." />
             </properties>        
             <results>
               <test-case name="NamespaceName.ClassName.MethodName"
                          executed="{true|false}" 
                          result="{Success|Failure|Ignored|Error|Inconclusive|NotRunnable}" 
                          success="{true|false}">
                  <categories>
                    <category name="..." value="..." />
                  </categories>
                  <properties>
                    <property name="..." value=".." />
                  </properties>
                  <!-- either failure or reason (NotRunnable) -->
                  <failure>
                    <message><![CDATA[ ... ]]></message>
                    <stacktrace><![CDATA[ ... ]]></message>
                  </failure>
                  <reason>
                    <message><![CDATA[ ... ]></message>
                  </reason>
               </test-case>
             </results>
          </test-suite>
        </results>
      </test-suite>
    </results>
  </test-suite>
</test-results>

V3:

<test-run id="n" result="{Passed|Failed}" testcasecount="n" total="n" passed="n" failed="n" inconclusive="n" skipped="n" >
  <test-suite id="n" type="Assembly" fullname="/path/to/assembly.dll">
    <properties>
      <property name="..." value="..." />
    <properties>
    <test-suite id="n" type="TestFixture" fullname="NamespaceName.ClassName"
                result="{Passed|Failed|Inconclusive|Skipped}">
      <properties>
        <property name="..." value="..." />
      <properties>
      <test-case id="n" name="MethodName" fullname="NamespaceName.ClassName.MethodName"
                 result="{Passed|Failed|Skipped}"
                 label="{Error|Cancelled|Invalid}">
        <!-- either failure or reason (Invalid) -->
        <failure>
          <message><![CDATA[ ... ]]></message>
           <stacktrace><![CDATA[ ... ]]></message>
        </failure>
        <reason>
          <message><![CDATA[ ... ]></message>
        </reason>
      </test-case>
    </test-suite>
  <test-suite>
</test-run>

This implementation automatically detects whether you are using nunit v2 or nunit v3 format.