Код, который создает HTML, находится в PHPUnit/Util/TestDox/ResultPrinter/HTML.php
, и, к сожалению, я не знаю, как его расширить. Вы можете просто изменить его, но тогда вам придется повторять это для каждого обновления, которое может раздражать.
Так как результат в любом случае довольно мал, я бы пошел другим путем:
Я бы использовал вывод phpunit файла .xml (например, phpunit --log-junit foo.xml DemoTest.php
) и использовал xslt или анализатор dom для преобразования вывода в html. Это не должно быть много работы, и вы можете настроить его очень быстро.
Я написал небольшой пример использования xslt
для преобразования вывода.
Тест
<?php
class DemoTest extends PHPUnit_Framework_TestCase {
public function testPass() {
$this->assertTrue(true);
}
public function testFail() {
$this->assertTrue(false);
}
}
Создать вывод xml
phpunit --log-junit foo.xml DemoTest.php
Шаблон xslt
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h1>Tests</h1>
<xsl:for-each select="testsuites/testsuite">
<h2><xsl:value-of select="@name"/></h2>
<ul>
<xsl:for-each select="testcase">
<li>
<xsl:value-of select="@name"/>
<xsl:if test="failure">
<b>Failed !</b>
<i><xsl:value-of select="*"/></i>
</xsl:if>
</li>
</xsl:for-each>
</ul>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Преобразование вывода
xsltproc foo.xsl foo.xml > output.html
Как это выглядит
<html>
<body>
<h1>Tests</h1>
<h2>DemoTest</h2>
<ul>
<li>testPass</li>
<li>testFail<b>Failed !</b>
<i>DemoTest::testFail
Failed asserting that <boolean:false> is true.
/home/edo/DemoTest.php:10
</i>
</li>
</ul>
</body>
</html>
и это должно быть легко адаптировано, потому что вы можете использовать все значения в xml-файле, такие как время выполнения каждого теста и т. Д.
Альтернативы
Вы можете использовать DomParser, просто изменить класс PHPUnit или, может быть, у кого-то есть более быстрое представление:)