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);
}