我希望在setUp函数中使用一个具有不同参数的对象运行一系列测试。
我该怎么做?我尝试使用@dataProvider,但这对setUp不起作用我很快发现..
这是我想要做的事情(使用@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”的对象
运行非常感谢任何帮助!
谢谢, 马特
答案 0 :(得分:10)
如果它不适合测试,则不必将SUT分配给TestCase实例的成员变量。只需在提供程序中创建新的Tag实例,然后将它们传递给测试函数
/**
* 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 );
}
如果testOne
以testTwo
取决于更改的方式更改测试,您可以执行以下操作:
/*
* @dataProvider tagProvider
*/
function testOne( Tag $tag ) {
$this->assertSomething( $tag );
return $tag;
}
/*
* @depends testOne
*/
function testTwo( Tag $tag ) {
$this->assertSomething( $tag );
}
然后testTwo
将使用$tag
中返回的testOne
,以及testOne
中对其所做的任何状态更改。