多次运行PHPUnit测试用例

多次运行PHPUnit测试用例,php,phpunit,testcase,Php,Phpunit,Testcase,我正在寻找一种方法,如何使用不同的设置多次运行测试用例 我正在测试一个数据库访问类(几十种测试方法),希望先在“正常模式”下测试,然后在“调试模式”下测试。两种模式必须产生相同的测试结果 在testcase设置中是否有这样做的可能性?还是重写run()方法? 当然,我不想写两次测试:) 多谢各位 编辑:明白了 public function run(PHPUnit_Framework_TestResult $result = NULL) { if ($result === NULL) {

我正在寻找一种方法,如何使用不同的设置多次运行测试用例

我正在测试一个数据库访问类(几十种测试方法),希望先在“正常模式”下测试,然后在“调试模式”下测试。两种模式必须产生相同的测试结果

在testcase设置中是否有这样做的可能性?还是重写run()方法? 当然,我不想写两次测试:)

多谢各位

编辑:明白了

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次。