web-dev-qa-db-ja.com

phpunitを取得して、フォルダー内のすべてのファイルからテストを実行するにはどうすればよいですか?

私が読んだことから、フォルダを設定できるはずです。 tests /、単体テストクラスを使用していくつかのファイルを配置し、そのファイルに対してphpunitを実行し、テストを見つけて実行させます。

何らかの理由で、私のインストール(OS X)では、フォルダーtests /はファイルであると考えられます。

$ ls tests
test1.php test2.php
$ phpunit tests/test1.php
PHPUnit 3.5.3 by Sebastian Bergmann.

F

Time: 0 seconds, Memory: 5.00Mb

There was 1 failure:

1) FailingTest::testFail
Your test successfully failed!

/Users/****/tmp/tests/test1.php:4

FAILURES!
Tests: 1, Assertions: 0, Failures: 1.
$ phpunit tests/test2.php
PHPUnit 3.5.3 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 5.00Mb

OK (1 test, 1 assertion)
$ phpunit tests
PHP Fatal error:  Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "tests.php" nor "tests.php" could be opened.' in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php:102
Stack trace:
#0 /usr/local/PEAR/PHPUnit/TextUI/Command.php(157): PHPUnit_Util_Skeleton_Test->__construct('tests', '')
#1 /usr/local/PEAR/PHPUnit/TextUI/Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#2 /usr/local/bin/phpunit(53): PHPUnit_TextUI_Command::main()
#3 {main}
  thrown in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php on line 102

Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "tests.php" nor "tests.php" could be opened.' in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php:102
Stack trace:
#0 /usr/local/PEAR/PHPUnit/TextUI/Command.php(157): PHPUnit_Util_Skeleton_Test->__construct('tests', '')
#1 /usr/local/PEAR/PHPUnit/TextUI/Command.php(129): PHPUnit_TextUI_Command->run(Array, true)
#2 /usr/local/bin/phpunit(53): PHPUnit_TextUI_Command::main()
#3 {main}
  thrown in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php on line 102

私は、これらの指示に従って、PEAR経由のphpunitのかなり標準的なインストールであることを望んでいます http://www.newmediacampaigns.com/page/install-pear-phpunit-xdebug-on-macosx-snow-leopard 、OS X Snow Leopardで。

$ pear version
PEAR Version: 1.9.1
PHP Version: 5.3.2
Zend Engine Version: 2.3.0
Running on: **** 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386 i386
$ phpunit --version
PHPUnit 3.5.3 by Sebastian Bergmann.

私はそこに他の誰かがこの問題に遭遇し、それが単なる簡単な修正であるか、そうでなければ私が何か間違ったことをしていることを望んでいますか?

41
jsdalton

これはバグではなく、機能です。

.phpファイルでいっぱいのディレクトリがあります。あなたの場合、それらはすべてテストケースを含んでいます。

しかし、テストスイートが成長するにつれて、テストをサポートするためだけに存在する、テストディレクトリ内に他のphpファイル(テストを含まないファイル)が必要になるでしょう。これらのファイルは、PHPUnit自体によって実行されることはありません。

これは非常に一般的なシナリオです。

では、PHPUnitはどのファイルを実行する必要があるのか​​、どのファイルを実行しないのかをどのようにして知るのでしょうか?ファイル名の接尾辞を確認することは、それを行うための1つのオプションです。デフォルトでは、PHPUnitは、名前がTest.phpはテストであり、他のすべてを無視します

本当にしたい場合は、その動作を変更できます-phpunit.xmlという名前のファイルを次の内容でtestsディレクトリに作成することにより

<?xml version="1.0" encoding="utf-8" ?>
<phpunit>
<testsuite name='Name your suite'>
    <directory suffix='.php'>./</directory>
</testsuite>
</phpunit>

これを行うと、PHPUnitはファイル名の最後に「.php」を持つすべてのファイルを実行します(このコンテキストでは、ファイル拡張子はファイル名の一部と見なされます)

しかし、実際には慣習に慣れて、それに応じてテストに名前を付ける方が良いです。

65
Anti Veeranna

フォルダーでテストを実行するより簡単な方法は、すべてのテストの最後に「Test.php」を追加し、このようにフォルダーを指定してphpunitを実行することです

phpunit .

または

phpunit your_test_folder/.
26
Gonzalo Cao

迷惑な小さな癖ですが、私はそれを理解しました。

少なくともデフォルトの構成では、テストファイルは「Test.php」で終わる必要があります。 fooTest.php、またはテストランナーがそれらを見つけられない。

24
jsdalton