2011-08-12 4 views
7

私はphpunit.xmlファイルでこれを持っている:PHPUnitは、testsuiteの名前のファイルを見つけようとしているのはなぜですか?

<phpunit ...> 
    <testsuites> 
     <testsuite name="MyTests"> 
      <directory>../path/to/some/tests</directory> 
     </testsuite> 
    </testsuites> 
    ... // more settings for <filter> and <logging> 
</phpunit> 

そして、私はそれを実行するために行くとき、私はこのエラーを取得:

PHP fatal error: Uncaught exception 'PHPUnit_Framework_Exception' 
with message 'Neither "MyTests.php" nor "MyTests.php" could be opened.' 

はなぜPHPUnitは、私は、このエラーを与えず、かつ理由ですテストを探すディレクトリを与えた場合、 "MyTests.php"を探していますか?

関連するメモで、<testsuite>のエントリを他のテストで追加すると、PHPUnitはエラーなく実行されます。どうしたの?

答えて

5

デフォルトでは、PHPUnitは "*Test.phpファイルで検出されたすべての*Testクラス"(PHPUnit docsを参照)を追加します。その説明に一致するファイルが見つからない場合(SomeTestクラスを定義するSomeTest.phpファイル)、テストスイートのname属性に基づいてファイルを探します。

ソリューションは、PHPUnitがバックテストスイート名による検索のデフォルトに落ちないように、その記述と一致するファイルを作成することです:

<?php 
// in ../path/to/some/tests/SomeTest.php: 
class SomeTest extends PHPUnit_Framework_TestCase { 
    public function test() { 
     //... test cases here 
    } 
} 
?> 

今、あなたはエラーなしphpunitを実行することができます:

$ phpunit 
PHPUnit 3.5.14 by Sebastian Bergmann. 

. 

Time: 0 seconds, Memory: 10.75Mb 

OK (1 test, 0 assertions) 

、PHPUnitがそれらの他のスイートで実行するようにマッチングテストケースを見つけることができれば、あなたがより多くのtestsuiteエントリを追加するときにはエラーなしで動作します。任意のテストスイートで実行するテストが見つかった場合は、それが見つからなかったスイートのname属性による検索に頼らないでしょう。

1

私は、あなたが実行したいテストケースやスイートがどのファイルに含まれているのかを教えていないと思います。 suffix="Test.php"属性を追加してみてください。

<testsuite name="MyTests"> 
    <directory suffix="Test.php">../path/to/some/tests</directory> 
</testsuite> 
+0

デフォルトの接尾辞は "Test.php"のようです。接尾辞にマッチするファイルがなく、 'name'属性で指定された名前のファイルを探し始めるときです。面白い。 – chesles

+1

LOL、私はあなたが実際にいくつかのテストを実行していて、私のファイルと比べて何が違うのかを探していると思っていました。 :)私は今から接尾辞を省略することができます知っておいてよかった。 –

関連する問題