我希望在setup函数中使用一个具有不同参数的对象运行一系列测试。
我该怎么做?我试过使用@dataprovider,但我很快就发现它不适用于安装程序。
下面是我想做的(使用@dataprovider):

/*
* @dataProvider provider
*/
function setUp($namespace, $args) {
   $this->tag = new Tag($namespace, $args);
}

function provider() {
   return array(
      array('hello', array()),
      array('world', array())
   );
}

function testOne() {

}

function testTwo() {

}

结果是,testone()和testtwo()针对名称空间为“hello”的对象和名称空间为“world”的对象运行。
任何帮助都将不胜感激!
谢谢,
马特

最佳答案

如果不适合测试,则不必将sut分配给testcase实例的成员变量。只需在提供程序中创建新的标记实例并将它们传递给测试函数

/**
 * Provides different test Tag instances
 */
function tagProvider() {
   return array(
      array( new Tag( 'hello', array() ) ),
      array( new Tag( 'world', array() ) )
   );
}

/*
* @dataProvider tagProvider
*/
function testOne( Tag $tag ) {
    $this->assertSomething( $tag );
}

如果testOnetestTwo依赖于更改的方式更改测试,您可以这样做:
/*
* @dataProvider tagProvider
*/
function testOne( Tag $tag ) {
    $this->assertSomething( $tag );
    return $tag;
}

/*
* @depends testOne
*/
function testTwo( Tag $tag ) {
    $this->assertSomething( $tag );
}

然后testTwo将使用从$tag返回的testOne,以及在testOne中对其进行的任何状态更改。

10-08 08:02