Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Not A Bug
-
3.0.0-M5
-
None
-
None
Description
If a JUnit test fails in @BeforeAll (or a JUnit 4 test in @BeforeClass), then Surefire reports it correctly on the console and fails the build (what was not the case with 3.0.0-M4 with @BeforeAll) but the testcase name attribute in the XML report is now empty:
Example:
<testcase name="" classname="test.TestJUnit5FailingInBeforeAll" time="0.017"> <failure type="org.opentest4j.AssertionFailedError"><![CDATA[org.opentest4j.AssertionFailedError: Failure in @BeforeAll method at test.TestJUnit5FailingInBeforeAll.setup(TestJUnit5FailingInBeforeAll.java:14) ]]></failure> <system-out><![CDATA[In setup... ]]></system-out> </testcase>
As a reference, Surefire 2.2 writes the same content in the classname and name attributes:
<testcase name="test.TestJUnit5FailingInBeforeAll" classname="test.TestJUnit5FailingInBeforeAll" time="0.016"> <failure message="Failure in @BeforeAll method" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: Failure in @BeforeAll method at test.TestJUnit5FailingInBeforeAll.setup(TestJUnit5FailingInBeforeAll.java:14) </failure> <system-out><![CDATA[In setup... ]]></system-out> </testcase>
It is not really wrong to consider that the testcase node has no name here but it would be a change compared to prior versions that other systems need to handle (Jenkins for instance doesn't display the report correctly in this case).
Bug or feature? If this considered as a bug, I can try to provide a patch.