Skip to content

Commit

Permalink
Improve how test group information is represented in TestDox XML
Browse files Browse the repository at this point in the history
  • Loading branch information
sebastianbergmann committed Feb 7, 2019
1 parent cd3067a commit 96fc9b1
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 14 deletions.
16 changes: 16 additions & 0 deletions ChangeLog-8.1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Changes in PHPUnit 8.1

All notable changes of the PHPUnit 8.1 release series are documented in this file using the [Keep a CHANGELOG](http://keepachangelog.com/) principles.

## [8.1.0] - 2019-MM-DD

### Added

* Information on test groups in the TestDox XML report is now stored in `group` elements that are child nodes of `test`

### Changed

* The `groups` attribute on the `test` element in the TestDox XML report is now deprecated

[8.1.0]: https://github.com/sebastianbergmann/phpunit/compare/8.0...8.1.0

8 changes: 8 additions & 0 deletions src/Util/TestDox/XmlResultPrinter.php
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,14 @@ function ($group) {
$node->setAttribute('size', (string) $test->getSize());
$node->setAttribute('groups', \implode(',', $groups));

foreach ($groups as $group) {
$groupNode = $this->document->createElement('group');

$groupNode->setAttribute('name', $group);

$node->appendChild($groupNode);
}

$inlineAnnotations = \PHPUnit\Util\Test::getInlineAnnotations(\get_class($test), $test->getName());

if (isset($inlineAnnotations['given'], $inlineAnnotations['when'], $inlineAnnotations['then'])) {
Expand Down
56 changes: 42 additions & 14 deletions tests/end-to-end/loggers/testdox-xml.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,48 @@ PHPUnit %s by Sebastian Bergmann and contributors.

.FEISRW.FEISRW 14 / 14 (100%)<?xml version="1.0" encoding="UTF-8"?>
<tests>
<test className="vendor\project\StatusTest" methodName="testSuccess" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Success" status="0" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testFailure" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Failure" status="3" time="%s" size="-1" groups="default" exceptionLine="%d" exceptionMessage="Failed asserting that false is true."/>
<test className="vendor\project\StatusTest" methodName="testError" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Error" status="4" time="%s" size="-1" groups="default" exceptionMessage=""/>
<test className="vendor\project\StatusTest" methodName="testIncomplete" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Incomplete" status="2" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testSkipped" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Skipped" status="1" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testRisky" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Risky" status="5" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testWarning" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Warning" status="6" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testSuccessWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Success with message" status="0" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testFailureWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Failure with message" status="3" time="%s" size="-1" groups="default" exceptionLine="%d" exceptionMessage="failure with custom message&#10;Failed asserting that false is true."/>
<test className="vendor\project\StatusTest" methodName="testErrorWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Error with message" status="4" time="%s" size="-1" groups="default" exceptionMessage="error with custom message"/>
<test className="vendor\project\StatusTest" methodName="testIncompleteWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Incomplete with message" status="2" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testSkippedWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Skipped with message" status="1" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testRiskyWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Risky with message" status="5" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testWarningWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Warning with message" status="6" time="%s" size="-1" groups="default"/>
<test className="vendor\project\StatusTest" methodName="testSuccess" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Success" status="0" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testFailure" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Failure" status="3" time="%s" size="-1" groups="default" exceptionLine="%d" exceptionMessage="Failed asserting that false is true.">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testError" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Error" status="4" time="%s" size="-1" groups="default" exceptionMessage="">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testIncomplete" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Incomplete" status="2" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testSkipped" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Skipped" status="1" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testRisky" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Risky" status="5" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testWarning" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Warning" status="6" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testSuccessWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Success with message" status="0" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testFailureWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Failure with message" status="3" time="%s" size="-1" groups="default" exceptionLine="%d" exceptionMessage="failure with custom message&#10;Failed asserting that false is true.">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testErrorWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Error with message" status="4" time="%s" size="-1" groups="default" exceptionMessage="error with custom message">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testIncompleteWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Incomplete with message" status="2" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testSkippedWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Skipped with message" status="1" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testRiskyWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Risky with message" status="5" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
<test className="vendor\project\StatusTest" methodName="testWarningWithMessage" prettifiedClassName="Test result status with and without message" prettifiedMethodName="Warning with message" status="6" time="%s" size="-1" groups="default">
<group name="default"/>
</test>
</tests>


Expand Down

0 comments on commit 96fc9b1

Please sign in to comment.