使用dataProviders时扩展PHPUnit_Framework_TestCase

时间:2013-11-08 19:57:21

标签: unit-testing phpunit dataprovider extending

我是使用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有另一种方式来适应这些类型的情况?

感谢您的帮助,

约旦

2 个答案:

答案 0 :(得分:0)

您的测试功能不以“测试”一词开头。

public function test_myProviderTest($a, $b, $result){

答案 1 :(得分:0)

这实际上是一个非问题。我的测试文件中的构造函数设置不正确。一个非常令人沮丧的疏忽。