私は、単体テストのカバレッジがしっかりしている PHP プロジェクトに取り組んでいます。
前回、単体テストのコマンドライン テスト ランナーの--filterコマンドを使用して非常にトリッキーな操作を行っていることに気付きました。
公式ドキュメントからのこのコマンドの説明は次のとおりです。
- フィルター
名前が指定されたパターンに一致するテストのみを実行します。パターンは、単一のテストの名前か、複数のテスト名に一致する正規表現のいずれかです。
テスト ベース全体から 1 つのテスト スイートまたはテスト ケースのみを実行することが非常に役立つ場合があるため、よく使用します。
これが良い習慣なのかどうか疑問に思っていますか?
1 つのコンポーネントのみを変更し、100% の自信を持って 1 つのコンポーネントのみを変更し、他のコンポーネントのユニットに失敗しないことが確実にわかっている場合は、継続的インテグレーション マシンでテスト スイート全体を実行することをお勧めします。テスト。あなたはそれについてどう思いますか?
少し前に、すべての単体テストのスイート全体を実行するのに必要な時間はあまり気にするべきではないと考えていましたが、非常に複雑なビジネス ロジックと単体テストがある場合、これにはかなりの時間がかかる場合があります。
「実際の」単体テストは DB と対話してはならず、モック/スタブ オブジェクトを使用するべきではないことを理解しています。それに同意します。しかし、場合によっては、テストに DB フィクスチャを使用する方がはるかに簡単 (安価) です。
この問題を解決する方法を教えてください。