phpunit测试取决于使用dataprovider的其他测试

时间:2016-10-26 21:35:49

标签: phpunit

我有这种情况

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上我发现了这句话:
"当测试依赖于使用数据提供程序的测试时,将执行依赖测试 当它依赖的测试对于至少一个数据集是成功的。测试的结果 使用数据提供者不能注入依赖测试。"

如何实现我的目标或以同样方式运作的结果?

1 个答案:

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