我是使用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有另一种方式来适应这些类型的情况?
感谢您的帮助,
约旦
答案 0 :(得分:0)
您的测试功能不以“测试”一词开头。
public function test_myProviderTest($a, $b, $result){
答案 1 :(得分:0)
这实际上是一个非问题。我的测试文件中的构造函数设置不正确。一个非常令人沮丧的疏忽。