我把测试分成了不同的组,这样我就不用费心去运行最慢的测试,除非绝对必要。
但有些人仍然很慢。
因此,我很想看到在整个测试套件完成运行之前失败或有错误的测试的名称。
例如,当我运行phpunit tests/Unit/ --verbose
时,我看到这样的输出:
PHPUnit 7.5.1 by Sebastian Bergmann and contributors.
Runtime: PHP 7.2.14-1+ubuntu16.04.1+deb.sury.org+1 with Xdebug 2.6.0
Configuration: /home/vagrant/Code/myproject/phpunit.xml
........F.....
字符串
但是,即使我看到了“F”,我也需要等很长时间才能看到哪个测试失败了。
我希望能够允许测试继续运行,但同时开始研究特定的测试,看看它失败的原因。
怎么做?
3条答案
按热度按时间guicsvcw1#
你至少有三个选择:
1.创建一个打印机类,并使用它与--printer标志
很久以前,我不得不做我自己的打印机,因为我需要显示一个测试花了多长时间。所以基本上我是打印时,一个测试开始,它的名称和它花了多长时间。你可以使用这个代码,并适应你的需要。
您需要创建一个新类(通常在/tests directoy下)。确保该类扩展PHPUnit_TextUI_ResultPrinter。然后在phpunit.xml文件中添加以下设置
字符串
我的打印机看起来像这样:
型
在你的情况下,我认为使用--testdox就足够了。如果它不起作用,那么我建议创建你自己的打印机,记住你仍然需要访问测试结果(我不知道如何做到这一点),所以你需要谷歌。
我希望这对你有帮助。
编辑:你可以做的另一件事是添加国旗
,这样一旦出现错误,测试就会停止。还有
(我想这是你想要的)。我总是使用这两个,因为我的测试套件有大约800个测试,整个执行大约需要3分钟。
bweufnob2#
我很欣赏Guillermo Mansilla's answer,现在我终于想出了一些我更喜欢的东西:
1)我编辑了我的 phpunit.xml 的
<phpunit>
标签,以包括:字符串
2)我的 CustomPhpUnitConsolePrinter.php 是这样的:
型
3)我还在结束标记
</phpunit>
之前添加了这一节(参见docs):型
a7qyws3x3#
Ryan's answer的一个小细节是:你不能扩展接口。
我所做的是在
PHPUnit\TextUI\DefaultResultPrinter
上扩展。