PhpUnit には、既存のクラスに基づく skel のジェネレーターがあります。
しかし、それは一度動作します。
後で新しいメソッドが追加された場合 (開発者が tdd で動作しないため)、テスト ファイルは不完全です。
カバーされていないメソッドのスケルを生成するツールはありますか?
PhpUnit には、既存のクラスに基づく skel のジェネレーターがあります。
しかし、それは一度動作します。
後で新しいメソッドが追加された場合 (開発者が tdd で動作しないため)、テスト ファイルは不完全です。
カバーされていないメソッドのスケルを生成するツールはありますか?
私は何も知りませんし、その必要性もわかりません。そのスケルトン ジェネレーターは、見つかった関数ごとに 1 つのテスト メソッドを生成しますが、わずかに高度な関数のすべてのユース ケースを 1 つのテスト関数だけでテストすることはできません。
また、テスト関数の名前が生成されますが、意図したテスト ケースまたはテストされる関数の動作を説明するために、より適切な名前を作成できますし、作成する必要があります。「testGetQuoteFromStockMarket」対「testGettingMicrosoftQuoteFromStockMarketShouldReturnQuoteObject」および「testGettingUmbrellaCorporationFromStockMarketShouldFailWithException」のように。
例外をスローしないケースと組み合わせて、例外のスローをテストすることはできないことに注意してください。
全体として、「メソッドごとに 1 つのテスト メソッド」を作成するユース ケースはまったくありません。新しいメソッドを追加する場合は、そのために適切な数の新しいテストを手動で追加する必要があります (生成されたコード カバレッジ統計)。あなたがどれだけうまくやったか、またはどの機能がテストされていないかを教えてくれます。
私の知る限り、自動生成されたテスト コードを更新する組み込みの phpunit 機能はありません。これは、ほとんどのコード ジェネレーターの典型です。
良いニュースは、各機能が非常にきれいに独立して追加されていることです。したがって、既存の単体テスト ファイルの名前を *.old に変更し、新しいテスト ファイルを再生成してからmeld(または選択したビジュアル差分ツール) を使用して、新しい関数をマージします。
余談ですが、自動テスト生成は実際には新しいクラスの開始時にのみ必要です。関数ごとに 1 つの単体テストを行うという考え方は、上司を喜ばせるために優れたカバレッジ統計を生成することを目的としています。優れたソフトウェアを構築するという観点からすると、複数のテストが必要な関数もあれば、実際にはテストを必要としない関数 (ゲッターとセッターが思い浮かびます) もあります。改めて思い出す)。