PHPUnit严格模式的作用是什么?
我想知道PHPUnit中的“严格模式”是什么 例如: 或者在phpunit.xml中PHPUnit严格模式的作用是什么?,php,unit-testing,phpunit,Php,Unit Testing,Phpunit,我想知道PHPUnit中的“严格模式”是什么 例如: 或者在phpunit.xml中 <phpunit strict="true"/> 请注意,PHPUnit会吞噬测试执行期间发出的所有输出。在严格模式下,发出输出的测试将失败 这就是我在文档中所能找到的,但我也检查了源代码,发现在严格模式下: 没有断言的测试可能被标记为不完整/失败 每个测试的运行时间可能有限制,具体取决于它的大小和和和的存在。有三个超时值: timeoutForSmallTests(默认值:1) timeout
<phpunit strict="true"/>
请注意,PHPUnit会吞噬测试执行期间发出的所有输出。在严格模式下,发出输出的测试将失败
这就是我在文档中所能找到的,但我也检查了源代码,发现在严格模式下:
(默认值:1)timeoutForSmallTests
(默认值:10)timeoutForMediumTests
(默认值:60)timeoutForLargeTests
PHPUnit\u Util\u test::getSize()
方法确定:
- 从
或PHPUnit\u Extensions\u Database\u TestCase
下降的测试用例很大PHPUnit\u Extensions\u SeleniumTestCase
- 通过将测试用例和单个测试分别添加到“大”或“中”,也可以使它们成为大测试或中测试
- 否则,测试很小
严格模式似乎只做了上述三个改变,但我不是绝对肯定。我以前从未研究过PHPUnit的来源,也没有使用严格模式。简短回答: 对于长时间运行的测试,请使用注释来增加允许的运行时间:
@large // 10 seconds
@medium // 5 seconds
@small // 1 second max <-- Default, so no point using
可以在类级别或方法级别指定它们。
提示同时提供类级和方法级的问题,以便混合使用。正如crozin所说,分配的超时时间分别为10、5、1秒
另一种解决方案是增加被调用函数的运行时间(在我速度较慢的计算机上)
下面是一组关于strict mode的信息,它们帮助我找到了解决方案:
PHP_调用程序用于调用具有超时的可调用项的实用程序类。在严格模式下强制执行测试超时需要此包。[] 严格模式 不断言任何内容的测试被标记为未完成 不完整(或跳过)的测试不会产生代码覆盖率 注
请注意,PHPUnit会吞噬测试执行期间发出的所有输出。在严格模式下,发出输出的测试将失败
更改phpunit.xml文件中测试的允许时间,如下所述
PHP_Invoker_TimeoutException: Execution aborted after 1 second
@large // 10 seconds
@medium // 5 seconds
@small // 1 second max <-- Default, so no point using
@large // 10 seconds
@medium // 5 seconds
@small // 1 second max run time
sudo vi /usr/share/php/pear/share/pear/PHP/Invoker.php
Increase line 1 "declare(ticks = 1);" to
"declare(ticks = 10);" // or any higher int that meets your needs