我正在使用香肠框架通过 Sauce Labs 运行基于 phpunit 的并行化 Selenium Web 驱动程序测试。一切正常,直到我想通过 markTestSkipped() 将测试标记为已跳过。我已经通过两种方法尝试过:
在测试方法本身中设置 markTestSkipped() :
class MyTest
{
public function setUp()
{
//Some set up
parent::setUp();
}
public function testMyTest()
{
$this->markTestSkipped('Skipping test');
}
}
在这种情况下,测试会被跳过,但只有在执行 setUp 之后才会跳过,这会为跳过的测试执行很多不必要的工作。最重要的是,phpunit 不会跟踪已跳过的测试——事实上它根本不会跟踪测试。我得到以下输出:
Running phpunit in 4 processes with <PATH_TO>/vendor/bin/phpunit
Time: <num> seconds, Memory: <mem used>
OK (0 tests, 0 assertions)
另一种方法是在 setUp 方法中设置 markTestSkipped():
class MyTest
{
public function setUp()
{
if (!shouldRunTest()) {
$this->markTestSkipped('Skipping test');
} else {
parent::setUp();
}
}
protected function shouldRunTest()
{
$shouldrun = //some checks to see if test should be run
return $shouldrun;
}
public function testMyTest()
{
//run the test
}
}
在这种情况下,setUp 被跳过,但测试仍然无法将测试跟踪为已跳过。phpunit 仍然返回上述输出。任何想法为什么 phpunit 在以这种方式执行时不跟踪我跳过的测试?