0

テストが必要な時間のかかる操作があります。この操作により、データベースが変更されます。現在、私のテストの大部分は非常に似ており、データベースでクエリを実行して、操作後に期待される結果を判断します。次に、テスト対象の操作が実行されます。最後に、データベースが再度照会され、期待される条件が満たされているかどうかが判断されます。各テストでデータベースにクエリを実行して、期待される結果と実際の結果を判断しているだけなので、テスト対象の関数は常にデータベースで同じ操作を実行しています。操作を 1 回実行して、各条件を独自のテストでテストする方法はありますか?

4

2 に答える 2

2

データベースへの接続などの副作用があるコードで単体テストを実行するための標準的な戦略は、実際のデータベース接続やその他のサービスの代わりにモック オブジェクトを提供することですが、コードの構造によっては、これを採用するのが難しくなったり簡単になったりする場合があります。 .

制御の反転と依存性注入のフレームワークは、この種の目的に非常に役立ちます。依存性注入パターンにより、オブジェクトは、テスト目的またはモジュール化されたコードを作成するために直接構築するのではなく、実行時に依存する実装を渡すことができるようになります。StructureMapはそのような C# のフレームワークですが、Spring.NET など、他にもあります。

于 2012-08-02T12:29:43.373 に答える
1

ユニット テスト フレームワークやモッキング フレームワークを使用したいようです。

原則として、クエリ自体が開発とテストを必要とするため、クエリがデータベースで期待どおりに機能することをテストするために追加のクエリを作成しないでください。

書き込み先のデータベースによっては、データベースで影響を受ける行数を取得できる場合があります (SQL Server の @@rowcount を参照してください)。ただし、テストを行うためだけにコードを追加しているため、実際には別のアクティビティにする必要があります。

于 2012-08-02T12:28:53.383 に答える