我对使用 PHPUnit 还很陌生,我正在尝试通过使用数据提供程序来更有效地使用它。在编写普通测试用例时,我可以让数据提供程序工作,但是我发现我正在为多个测试用例重写我的设置代码。所以我试图用一个 BaseTestCase 类来扩展 PHPUnit_Framework_TestCase ,它可以完成我所有的常见设置。如果我在扩展我的 BaseTestCase 类的测试用例中运行简单测试,则此方法有效。但是,在扩展我的 BaseTestCase 类时,我似乎无法使用 @dataProvider。
所以我的设置是:
class BaseTestCase extends PHPUnit_Framework_TestCase{
public static function setUpBeforeClass(){
//do setup
//this is getting called and it works
}
}
class myTest extends BaseTestCase{
public function myBasicTest(){
//this works
$this->assertEquals(2, 1+1);
}
public function myProvider(){
return [
[1,1,2],
[1,2,3],
[1,4,5],
]
}
/**
* @dataProvider myProvider
*/
public function testMyProvider($a, $b, $result){
//this doesn't work, the provider never gets called
//this would normally work if I extended PHPUnit_Framework_TestCase
$this->assertEquals($result, $a+$b);
}
}
我知道提供程序在任何设置之前运行,所以我想知道 PHPUnit 是否因为继承而不知道提供程序存在。无论哪种方式,有谁知道我正在尝试做的事情是否可以通过这种方式进行,或者 PHPUnit 是否有另一种方式来适应这些类型的情况?
谢谢你的帮助,
约旦