多次运行PHPUnit测试用例
我正在寻找一种方法,如何使用不同的设置多次运行测试用例 我正在测试一个数据库访问类(几十种测试方法),希望先在“正常模式”下测试,然后在“调试模式”下测试。两种模式必须产生相同的测试结果 在testcase设置中是否有这样做的可能性?还是重写run()方法? 当然,我不想写两次测试:) 多谢各位 编辑:明白了多次运行PHPUnit测试用例,php,phpunit,testcase,Php,Phpunit,Testcase,我正在寻找一种方法,如何使用不同的设置多次运行测试用例 我正在测试一个数据库访问类(几十种测试方法),希望先在“正常模式”下测试,然后在“调试模式”下测试。两种模式必须产生相同的测试结果 在testcase设置中是否有这样做的可能性?还是重写run()方法? 当然,我不想写两次测试:) 多谢各位 编辑:明白了 public function run(PHPUnit_Framework_TestResult $result = NULL) { if ($result === NULL) {
public function run(PHPUnit_Framework_TestResult $result = NULL)
{
if ($result === NULL) {
$result = $this->createResult();
}
/**
* Run the testsuite multiple times with different debug level
*/
$this->debugLevel = 0;
print "Setting debug level to: " . $this->debugLevel . PHP_EOL;
$result->run($this);
$this->debugLevel = 8;
print "Setting debug level to: " . $this->debugLevel . PHP_EOL;
$result->run($this);
$this->debugLevel = 16;
print "Setting debug level to: " . $this->debugLevel . PHP_EOL;
$result->run($this);
return $result;
}
public function setUp()
{
parent::setUp();
$this->myclass->setOptions('debug', $this->debugLevel);
}
PHPUnit提供测试装饰器。实际上,有重复的decorator作为如何处理decorator的示例。decorator将是以可重用的方式实现行为的完美方式,而不依赖于子类化
PHPUnit\u Framework\u TestCase
您可以在单元测试中创建多个方法。所有测试都将运行,在每个测试方法运行后调用设置方法。我认为Sven的答案是正确的。编写您想要设置的内容,并给出您需要的测试用例参数,如:
/**
*@dataProvider-forMyTest
*/
具有不同TDB类型的公共函数测试($type、$param1、$param…)
{
$this->assertExists(..);
}
公共功能forMyTest(){
返回[
[
真的
[$prodDb,$param1,$param,…],
],
[
假,,
[$debugDb,$param1$param。。。。,
],
];
}
看看发出测试数据集的@dataProvider
函数。我知道dataProviders的用法:)我只想更改类的一个简单设置,然后再次运行所有测试方法。类似于:run();$class->setDebug(true);run();您可以将所有代码移动到抽象测试用例中,并在setUp()中使用不同的代码创建两个子项。非常好!您应该为每次迭代(但第一次)运行setUp()
,以实现隔离。仅供参考,您应该将count()
设置为3,因为您正在运行测试3次。