有没有办法关闭';故障/错误时停止';对于PHPUnit中的特定测试?
我正在开发一个API文档系统,并希望动态检查每个命令是否附带文档。 最简单的方法是动态循环每个命令,并检查现有文档是否与之匹配 我的代码如下所示:有没有办法关闭';故障/错误时停止';对于PHPUnit中的特定测试?,php,phpunit,Php,Phpunit,我正在开发一个API文档系统,并希望动态检查每个命令是否附带文档。 最简单的方法是动态循环每个命令,并检查现有文档是否与之匹配 我的代码如下所示: public function testMissingDocs() { foreach ($aCommands as $sKey => $aOptions) { $this->assertNotNull($oDocs->get($sKey)); } } 问题在于PHPUnit的StopOnF
public function testMissingDocs()
{
foreach ($aCommands as $sKey => $aOptions)
{
$this->assertNotNull($oDocs->get($sKey));
}
}
问题在于PHPUnit的StopOnFailure/Error特性,它在第一次断言失败后停止测试。我理解这个功能的原因,并且我希望在我的大多数测试用例中都使用它,但是对于动态断言/测试,它会让事情变得有点困难
是否有办法在每个测试的基础上禁用它,以便我可以检查此测试中的每个命令?如果缺少特定类或方法的文档,则表示该类存在问题,而不是检索文档的方法存在问题 尽管将所有文档合并到一个测试中可能更容易,但这并没有遵循单元测试最佳实践(这就是为什么PHPUnit框架对您不利而不是对您有利) 我建议采取以下两种方法之一来纠正这一问题:
/**
* @dataProvider getDocsForAllCommands
*/
public function testEveryCommandHasDocs($sKey)
{
$this->assertNotNull($oDocs->get($sKey));
}
public function getKeysForAllCommands()
{
return array_keys($aCommands);
}
我的目标是为开发人员忘记为API命令添加文档时构建一个自动警告系统。必须手动编写一个测试来检查文档,这就违背了这一点——这与花时间编写文档本身是一样的。PHP_CodeSniffer imho是您的工作@Valorin的首选工具。它会自动抱怨缺少文档块,而无需您自己编写。(Ab)使用PHPUnit也可以做到这一点,但这个建议绝对有效:)哦!我不是说代码中的文档,我是说用户文档-基本上我有一个.ini文件,每个命令都有文档,我有一个界面,可以根据命令和.ini文件中的文档自动生成HTML文档页面。因此,它通过检查每个API命令在docs.ini文件中是否有相应的文本块来确保生成的HTML用户文档是完整的。如果您的系统将自动生成文档,它还能生成单元测试吗?太棒了,这会很好地完成工作。谢谢。我从来都不知道这个很酷的功能