プロジェクトでPHPUnitファイルをどのように管理していますか? それをgit
リポジトリ
に追加しますか、それとも無視しますか? PHPdocsコードで@assertタグ
を使用していますか?
3 に答える
設定
私は現在 php を使用していませんが、gitでpython 単体テストとsphinx ドキュメントを使用しています。テストを git に追加し、リモートdevel
およびmaster
ブランチにプッシュするためのテスト パスに関する特定の要件もあります (master
より難しいdevel
)。これにより、コードの品質が少し保証されます(テストカバレッジも評価する必要がありますが、まだ実装されていません:))。
単体テスト フレームワークがそれらを自動的に検出できるように、テスト ファイルは、それらが属するディレクトリの最上位のソース ディレクトリの隣にある別のディレクトリにあり、接頭辞は です。test_
同様のドキュメントについては、sphinx docs ファイルを独自のサブディレクトリ (docs) に配置しました。この場合、これは独立した git サブモジュールであり、将来変更される可能性があります。
根拠
テストの変更はまれであるため、追跡できるようにしたいと考えています。頻繁な変更は、コードが未熟であることを示しています。
他のチーム メンバーはテストにアクセスする必要があります。いくつかの場所でコードを変更した場合、それが何かを壊していないことを確認できなければなりません。
ドキュメントはコードに属します。Python の場合、コードにはドキュメントが直接含まれています。ドキュメントはコードから生成されるため、両方を一緒に保持する必要があります。
リポジトリにテストとドキュメントがあると、リモート サーバーで自動テストとドキュメント作成が可能になり、更新されたドキュメントとテスト フィードバックが即座に得られます。また、テスト結果に基づく「コード品質」制限の実装もそのように機能します (実際には、テスト カバレッジも確認せずにテストでコード品質をチェックすることはできないため、テストを実行することを人々に思い出させるものです)。テストに合格しない場合、参照は git サーバーによって拒否されます。
たとえば、 on
master
では、すべてのテストをパスまたはスキップする必要があります (残念ながら、一部のテストでは OpenGL が必要であり、ヘッドレスでは利用できないため、スキップする必要があります)devel
。パス、スキップ、または予想される失敗、予期しない成功、エラー、または失敗なし)。
はい、それらを git に保持します。phpunit自体を含む、プロジェクトを見て拾った他の規則。(doctrine2 の例を見ると、同じ規則に従っているように見えます。)
私はテストをトップレベルのtests
ディレクトリに保管しています。その下に、意味のある名前のサブディレクトリを付けました。通常は、メイン プロジェクトのディレクトリ構造に従います。functional
複数のコンポーネントを一緒にテストするテスト用のサブディレクトリがあります (該当する場合)。
私は、テストの場所を示すように作成phpunit.xml.dist
します (また、ソース コードを見ている人には、phpunit を使用していることをすぐに伝え、xml ファイルを見ることで規則も理解できるようにします)。
@assert
またはスケルトンジェネレーターは使用しません。おもちゃの機能のように感じます。ある場所 (ソース ファイル) で入力を行い、別の場所 (単体テスト ファイル) に入力を保存します。しかし、その後、単体テスト ファイルのテストを拡張し (次の段落を参照)、元のアサートの一部を削除することもあるでしょう@assert
。元のソース ファイルのエントリは古くなり、見ただけで誤解を招く可能性があります。そのコード。
また、実世界のクラスの実世界でのテストに必要となる多くの力も失っています (単純な BankAccount の例、私はあなたを見ています)。いいえsetUp()
/ tearDown()
. インスタンス変数なし。カスタムのものは言うまでもなく、他のすべての組み込み assert 関数はサポートされていません。いいえ。@depends
_@dataProvider
@assert
に反対し、別のディレクトリ ツリーを維持するもう 1 つの理由tests
: 可能であれば、テストと実際のコードを別の人に書いてもらいたいからです。テストが失敗した場合、コーダーまたはテスターによる元のプロジェクト仕様の誤解を示している場合があります。コードとテストが密接に共存している場合、それらを同時に変更したくなることがあります。特に金曜日の午後遅く、デートがあるとき。
テストはコードファイルとともに保存されるため、開発者は実行するテストを確認し、必要に応じてテストを変更することができます。ファイルに.testの拡張子を追加するだけです。このようにして、元のファイルを各テストファイルに自動的に含めることができます。このファイルは、テンプレートを使用して作成できます。コードをリリースすると、ビルドプロセスによってすべてのディレクトリから.testファイルが削除されます。
/ application / src /
Foo.php
Foo.php.test
/application/src/CLASS/
FOO_BAR.class
FOO_BAR.class.test
require_once(substr(__FILE__, 0, -5)); // strip '.test' extension