1

m1() と m2() を呼び出すテンプレート メソッド template() があるとします。m1 と m2 のテストがあります。template() のテスト中に、モックを使用して m1 と m2 が正しく呼び出されたかどうかを確認するか、その API をテストするか、またはその両方を行う必要があります。

テンプレートのアルゴリズムを(モッキングを使って)チェックするテストは低レベルで、ソースコードの各行をチェックするようなものだと思います。

他の人がこれについてどう思うか聞きたいです。

4

1 に答える 1

0

私は分離と統合という 2 種類のテストを行うのが好きです。

私の分離テストには、他のクラスとのすべての相互作用をモックアウトすることによるクラスの単体テストが含まれます。Powermockのようなモッキング フレームワークを使用して、すべてのオブジェクト インタラクションをモック化し、定義済み (および未定義) のすべてのインタラクションが各テスト中に発生したことを確認できます。これらの分離テストは、チームが期待するコード カバレッジ メトリックを提供できる低レベルのテストです。Hudsonなどの継続的インテグレーション ツールを使用して、分離単体テストの実行とメトリック収集を自動化できます。

統合テストには、複数のクラスを呼び出すフローの実行が含まれます。ハッピー パス シナリオといくつかのエラー シナリオをテストする自動スイートを構築するのが好きです。ただし、アプリ内のコードのすべての行に触れるスイートを構築および維持することはありません。コストとリスクに基づいた決定です。Fitnesseなどのツールを使用して統合テストを自動化できる場合は、統合テストを開発環境のスモーク テストとして使用し、必要に応じて 1 日中実行して、アプリと環境が問題なく稼働していることを確認することもできます。 .

これは考えるのにとても良いトピックだと思います。テスト アプローチを決定する際には考慮すべき要素が多数あるため、これには 1 つの正解があるとは思いません。

于 2012-02-28T12:37:02.707 に答える