我正在使用PHPUNIT 3.4.5,我想得到我的测试完成的断言总数(我的示例代码有3个断言)。 “getNumAssertions”方法一直返回0。
public function test_DateUtil()
{
echo "\nNumAssertions : " . $this->getNumAssertions() . "\n";
$this->assertEquals(1, 1);
echo "NumAssertions : " . $this->getNumAssertions() . "\n";
}
public function test_DateUtil_2()
{
echo "\nNumAssertions : " . $this->getNumAssertions() . "\n";
$this->assertEquals(1, 1);
$this->assertEquals(1, 1);
echo "NumAssertions : " . $this->getNumAssertions() . "\n";
}
}
PHPUnit返回:
phpunit --configuration phpunit_dev.xml --verbose
PHPUnit 3.4.5 by Sebastian Bergmann.
UtilTest
NumAssertions : 0
NumAssertions : 0
.
NumAssertions : 0
NumAssertions : 0
.
Time: 1 second, Memory: 13.50Mb
OK (2 tests, 3 assertions) ------------> what i want to get
答案 0 :(得分:0)
您应该使用PHPUnit_Framework_Assert::getCount()
public function test_DateUtil()
{
echo "\nNumAssertions : " . PHPUnit_Framework_Assert::getCount() . "\n";
$this->assertEquals(1, 1);
echo "NumAssertions : " . PHPUnit_Framework_Assert::getCount() . "\n";
}
您的代码未生成预期的输出,因为方法PHPUnit_Framework_TestCase::addToAssertionCount
在测试本身之外被调用,并且在测试完成之前不会调用它。
因此,您将无法使用getNumAssertions()
从测试方法中获取断言计数。
您将找到对
的调用 $test->addToAssertionCount(PHPUnit_Framework_Assert::getCount());
接近方法结束
PHPUnit_Framework_TestResult::run
<强> 修改 强>
运行所有测试后的输出由PHPUnit_TextUI_ResultPrinter
完成,其中包含protected
属性$numAssertions
。此属性没有访问者(getter)。
您可以extend the PHPUnit framework添加此功能。
一种选择是扩展PHPUnit_Framework_TestCase
类,重载run
方法并从那里增加自定义total assertions
计数器。
另一种选择是扩展PHPUnit_TextUI_ResultPrinter
类,类似于this article中的HTML结果打印机。
如果您想在不扩展PHPUnit的情况下发送整个输出的电子邮件,您可以pipe the results to an email application。
还有jenkins,它可以处理这个以及更多。
<强> 注 强>
我正在使用3.3.17