phpunit 测试取决于使用数据提供者的其他测试
phpunit test depending on other test that uses dataprovider
我遇到过这种情况
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上我发现了这句话:
“当测试依赖于使用数据提供者的测试时,将执行依赖测试
当它所依赖的测试至少对一个数据集成功时。一个测试的结果是
使用数据提供者不能注入依赖测试。"
如何实现我的目标或以同样的方式工作的结果?
我建议创建一个静态 属性,其中将填充来自 testOne
的数据。由于 @depends
注释,如果 testOne
失败,testTwo
将不会 运行。 testOne
将为将在 testTwo
测试中使用的静态 属性 c
添加值。
但是,我认为更好的做法是将两个测试分开。因此,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);
}
我遇到过这种情况
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上我发现了这句话:
“当测试依赖于使用数据提供者的测试时,将执行依赖测试
当它所依赖的测试至少对一个数据集成功时。一个测试的结果是
使用数据提供者不能注入依赖测试。"
如何实现我的目标或以同样的方式工作的结果?
我建议创建一个静态 属性,其中将填充来自 testOne
的数据。由于 @depends
注释,如果 testOne
失败,testTwo
将不会 运行。 testOne
将为将在 testTwo
测试中使用的静态 属性 c
添加值。
但是,我认为更好的做法是将两个测试分开。因此,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);
}