[解決済み] PHPUnit - 設定ファイルを使用すると「テストが実行されない」。
質問
問題点
コードの品質を向上させるために、私は平凡なテストソリューションの代わりに、ユニットテストを使用してコードをテストする方法を学ぶことにしました。
私は、一般的なデータベース関数を実現するための個人的なライブラリのために、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
誰かのお役に立てれば幸いです。
関連
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】 PHP 未定義関数の呼び出し
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】php, mysql - データベースへの接続数が多すぎるエラー
-
[解決済み] SQLSTATE[HY093]: 無効なパラメータ番号: バインドされた変数の数が102行目のトークンの数と一致しない [終了]
-
[解決済み】警告。数値でない値に遭遇しました
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。
-
[解決済み] PHPの配列を別の配列にコピーする関数はありますか?
-
[解決済み] 致命的なエラーです。mysqli_result 型のオブジェクトを使用できません [終了] 。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 整形されていない数値が発生しました。
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】未定義の関数mysql_query()をLoginで呼び出す【重複
-
[解決済み】警告。数値でない値に遭遇しました
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み] mysqli_fetch_assoc() は、パラメータ 1 が mysqli_result であることを期待し、boolean が与えられる [重複] 。
-
[解決済み] PHP product.php?id=1 のような URL を作成する方法