JenkinsでPHPUnitのテストファイルを複数指定する。

この続きです。
だいぶ間が空いてしまいました。

phpunit --log-junit reports/unitreport.xml \
--coverage-html reports/coverage \
--coverage-clover reports/coverage/coverage.xml \
./test/test_lib_*.php



僕のコマンドラインでのテストファイル指定は致命的なものがあるんだけれど、別の投稿にします。

って書いたまま放置して申し訳ないです。

どうもワイルドカードで指定したつもりだったんですが、結果を見ると最初のテストファイルの結果しか出てきません。


# phpunit --log-junit reports/unitreport.xml \
--coverage-html reports/coverage \
--coverage-clover reports/coverage/coverage.xml \
./test/test_lib_create.class.php \
./test/test_lib_db_get.class.php



# phpunit --log-junit reports/unitreport.xml \
--coverage-html reports/coverage \
--coverage-clover reports/coverage/coverage.xml \
./test/test_lib_create.class.php



両方とも同じ結果が出るのです。ワイルドカードが悪いとかそういう問題じゃなかったのです。



どうやら、複数のファイルを指定したい場合はディレクトリ指定+filterで行うか、xmlの設定ファイルを作って、-cで読み込ませるらしい。


という事が分かりました。

http://www.phpunit.de/manual/3.5/ja/organizing-tests.html#organizing-tests.xml-configuration

例 7.2: XML 設定ファイルを用いたテストスイートの構成
 
<phpunit>
  <testsuites>
    <testsuite name="Object_Freezer">
      <file>Tests/Freezer/HashGenerator/NonRecursiveSHA1Test.php</file>
      <file>Tests/Freezer/IdGenerator/UUIDTest.php</file>
      <file>Tests/Freezer/UtilTest.php</file>
      <file>Tests/FreezerTest.php</file>
      <file>Tests/Freezer/StorageTest.php</file>
      <file>Tests/Freezer/Storage/CouchDB/WithLazyLoadTest.php</file>
      <file>Tests/Freezer/Storage/CouchDB/WithoutLazyLoadTest.php</file>
    </testsuite>
  </testsuites>
</phpunit>



こんな感じで、PHPUnitのマニュアルには書いてあります。
で、これは相対パスなので、Jenkinsとかがバージョン管理システムから最新を持ってきてディレクトリ作って
実行するならこれでもOKです。ちょっと試したいとかだったら絶対パスで書いちゃっても・・・


複数指定をしたときのシェルコマンド


 phpunit -c ./test/test_lib.xml \
--log-junit reports/unitreport.xml \
--coverage-html reports/coverage \
--coverage-clover reports/coverage/coverage.xml


最終的にはこんな感じですね。

test_lib.xml
<phpunit>
  <testsuites>
    <testsuite name="Test_Lib_class">
      <file>test_lib_create.class.php</file>
      <file>test_lib_db_get.class.php</file>
      <file>test_lib_dbsave.class.php</file>
      <file>test_lib_save_file.class.php</file>
      <file>test_lib_xmlput.class.php</file>
    </testsuite>
  </testsuites>
</phpunit>