按特定顺序运行 PHPUnit 测试
2022-08-30 08:25:14
有没有办法让 a 内部的测试以特定顺序运行?例如,我想将对象的生命周期从创建到使用再到销毁分开,但我需要确保在运行其他测试之前先设置对象。TestCase
有没有办法让 a 内部的测试以特定顺序运行?例如,我想将对象的生命周期从创建到使用再到销毁分开,但我需要确保在运行其他测试之前先设置对象。TestCase
PHPUnit 支持通过@depends注释来测试依赖项。
下面是文档中的一个示例,其中测试将按满足依赖项的顺序运行,每个依赖测试将一个参数传递给下一个测试:
class StackTest extends PHPUnit_Framework_TestCase
{
public function testEmpty()
{
$stack = array();
$this->assertEmpty($stack);
return $stack;
}
/**
* @depends testEmpty
*/
public function testPush(array $stack)
{
array_push($stack, 'foo');
$this->assertEquals('foo', $stack[count($stack)-1]);
$this->assertNotEmpty($stack);
return $stack;
}
/**
* @depends testPush
*/
public function testPop(array $stack)
{
$this->assertEquals('foo', array_pop($stack));
$this->assertEmpty($stack);
}
}
但是,重要的是要注意,具有未解析依赖项的测试将不会执行(这是可取的,因为这会迅速引起对失败测试的关注)。因此,在使用依赖项时,请务必密切注意。
也许测试中存在设计问题。
通常,每个测试都不能依赖于任何其他测试,因此它们可以按任何顺序运行。
每个测试都需要实例化和销毁它需要运行的所有内容,这将是完美的方法,你永远不应该在测试之间共享对象和状态。
您能更具体地说明为什么N个测试需要相同的对象吗?