描述
我有一个TestSuite,我需要将其标记为已跳过(整个测试套件 - 而不是套件中的特定测试用例)。
class AllTests
{
public static function suite()
{
// this does not work same as within TestCase:
// throw new \PHPUnit_Framework_SkippedTestError("Out of order");
$Suite = new \PHPUnit_Framework_TestSuite(__NAMESPACE__);
$Suite->addTestSuite(translators\AllTests::cls());
$Suite->addTestSuite(TlScopeTest::cls());
$Suite->addTestSuite(TlNsTest::cls());
$Suite->addTestSuite(TlElementTest::cls());
$Suite->addTestSuite(TlItemTest::cls());
$Suite->addTestSuite(LangCodeTest::cls());
$Suite->addTestSuite(TlElemClassTagTest::cls());
return $Suite;
}
}
如您所见,抛出PHPUnit_Framework_SkippedTestError
异常不起作用。它不会被 PHPUnit 捕获,并且会作为任何未捕获的异常中断执行(这是可以理解的,因为suite()
在实际运行测试之前,在构建测试层次结构时调用了该方法)。
我见过一个名为 的异常类PHPUnit_Framework_SkippedTestSuiteError
,但不知道如何利用它。有任何想法吗?
动机
我有一个TestSuite,它聚合了许多测试用例以及其他测试套件。由于我对代码的核心进行了更改,因此几乎所有测试都失败了。
问题是这个包并不重要,并且计划稍后修复。在那之前,我必须为每个其他包运行测试,但是当我这样做时,PHPUnit 输出会充斥着来自相关包的错误。这迫使我每次都检查是否有任何故障来自任何其他包。
正如您可能怀疑的那样,这很容易受到人为错误的影响,即我可能会错过一个失败,这实际上很重要。
我只能运行我当前正在使用的测试套件,但我无法控制我对一个包的更改是否会导致另一个包失败。
我不想评论那个测试套件,因为我担心我(或将在我之后接管代码的人)可能会完全忘记它。