1. ホーム
  2. php

[解決済み] PHPUnit - 設定ファイルを使用すると「テストが実行されない」。

2022-10-29 21:13:55

質問

問題点

コードの品質を向上させるために、私は平凡なテストソリューションの代わりに、ユニットテストを使用してコードをテストする方法を学ぶことにしました。

私は、一般的なデータベース関数を実現するための個人的なライブラリのために、composer を使用して PHPUnit をインストールすることにしました。最初は PHPUnit の設定ファイルを持っておらず、次のようなコマンドを実行しました。

$ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest

なお、これは端末のコマンドなので、端末にある .php という拡張子をつけています。上で言及した GeneralStringFunctionsTest は、実際には GeneralStringFunctionsTest.php ファイルです。

出力は私が期待したものです。

時間: 31 ms, メモリ: 2.75 Mb

OK (1テスト、1アサーション)

次に、毎回手動でファイルを入力する代わりに、設定ファイルを使ってテストスイートを自動的にロードすることを試みました。というファイルを作成しました。 phpunit.xml というファイルをルートディレクトリに作成し、そのファイルに次のように入力しました。 http://pastebin.com/0j0L4WBD :

<?xml version = "1.0" encoding="UTF-8" ?>
<phpunit>
    <testsuites>
        <testsuite name="Tests">
            <directory>tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

これで、コマンドを実行すると

phpunit

次のような出力が得られます。

PHPUnit 4.5.0 by Sebastian Bergmann and contributors.

設定は /Users/muyiwa/Projects/DatabaseHelper/phpunit.xml から読み込んだものです。

時間:16ms、メモリ:1.50Mb

テストは実行されません!

一応、私のディレクトリ構成は以下の通りです。

src - トップレベル ディレクトリ (すべてのソース コードが含まれます)

tests - トップレベルのディレクトリ (私のすべてのテストが含まれます。 src フォルダと同じ構造になっています)

ベンダー - Composer サードパーティ製ファイル

また、composerのjsonとlockファイル、phpunitのxmlファイルをファイルとしてトップレベルに置いています。

試してみたこと

  • のディレクトリを変更する。 phpunit.xml から tests/GeneralStringFunctions
  • のディレクトリを変更する。 phpunit.xml から ./tests
  • を移動する phpunit.xml ファイルを tests ディレクトリに移動し、そのディレクトリを ./ ではなく tests .
  • のディレクトリタグに suffix 属性を追加する。 phpunit.xml に、明示的なサフィックスとして "Tests" を指定します。

どのように解決するのですか?

参考までに(遅ればせながら)、最近、簡単なウェブサイトのために新しいLaravel 5.1プロジェクトを作っているときに、これに遭遇しました。デバッグしようとしたら、混乱しました。

php artisan make:test homeTest

(これは単にtrueがtrueであることを保証するデフォルトのテストを持っています)

と出力されました。

No tests executed!

Laravel のインストールに付属する phpunit は正しく設定され、完全に動作しましたが、"phpunit" はグローバルに登録され、異なる方法で設定されました。

つまり、ベンダーが設定したphpunitを(app/やtests/と同じルートディレクトリから)実行することが修正方法です。

./vendor/bin/phpunit

誰かのお役に立てれば幸いです。