2

私は PHPUnit の使用にかなり慣れていないので、データ プロバイダーを使用してより効果的に使用しようとしています。通常のテスト ケースを作成するときにデータ プロバイダーを動作させることはできますが、いくつかのテスト ケースにまたがってセットアップ コードを書き直していることがわかりました。そこで、PHPUnit_Framework_TestCase を BaseTestCase クラスで拡張して、共通のセットアップをすべて実行しようとしています。これは、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

テスト関数が「test」という単語で始まっていません。

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

これは実際には問題ではありません。テスト ファイルに正しくないコンストラクターが設定されていました。非常にイライラする見落とし。

于 2013-11-11T14:59:05.810 に答える