我希望在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 );
}
如果
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
中对其进行的任何状态更改。