我有这种情况
public class MyTest extends .... {
function providerA(){
return array(array("a"));
}
function providerB(){
return array(array("b"));
}
/**
* @dataProvider providerA
*/
function testOne($a){
$c = "something";
return $c;
}
/**
* @depends testOne
* @dataProvider providerB
*/
function testTwo($b,$c){
var_dump($b);
var_dump($c);
}
}
var_dump($ c) - >总是空的,为什么?
我无法弄清楚发生了什么。在phpunit的pdf上我发现了这句话:
"当测试依赖于使用数据提供程序的测试时,将执行依赖测试
当它依赖的测试对于至少一个数据集是成功的。测试的结果
使用数据提供者不能注入依赖测试。"
如何实现我的目标或以同样方式运作的结果?
答案 0 :(得分:0)
我建议创建一个静态属性,该属性将填充testOne
中的数据。由于@depends
注释,如果testTwo
失败,testOne
将无法运行。 testOne
会为将在c
测试中使用的静态属性testTwo
添加值。
但是,我认为更好的做法是将两个测试分开。因此,testTwo
所需的数据全部由providerB
提供(不依赖于其他测试)。
private static $c = array(array("c"));
function providerA() {
return array(array("a"));
}
/**
* @dataProvider providerA
*/
function testOne($a) {
$c = "something";
self::$c[0][] = $c;
$this->assertTrue(true);
}
/**
* @depends testOne
*/
function testTwo() {
var_dump(self::$c);
}