2

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

谢谢你的帮助,

约旦

4

2 回答 2

0

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

public function test_myProviderTest($a, $b, $result){
于 2013-11-08T22:24:03.763 回答
0

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

于 2013-11-11T14:59:05.810 回答