2

テスト データを複数の小さなデータ セットに分散させると、スキーマが微調整されるたびにメンテナンスの頭痛の種になるように思えます。単一のより大きなテスト データ セットを作成する際に問題が発生することはありますか? 「より大きな」とは、まだ合計で数百のレコードについて話しているだけです。

4

1 に答える 1

6

一意の大規模なデータセットは使用せず (不要な場合はオーバーヘッドを回避したい)、DbUnit のベスト プラクティスの推奨事項に従います。

複数の小さなデータセットを使用する

ほとんどのテストでは、データベース全体を再初期化する必要はありません。したがって、データベース データ全体を 1 つの大きなデータセットに入れるのではなく、多数の小さなチャンクに分割してみてください。

これらのチャンクは、論理ユニットまたはコンポーネントにほぼ対応しています。これにより、テストごとにデータベースを初期化することによって発生するオーバーヘッドが削減されます。これにより、さまざまなコンポーネントで作業している多くの開発者がデータセットを個別に変更できるため、チーム開発も容易になります。

統合テストでは、引き続き CompositeDataSet クラスを使用して、実行時に複数のデータセットを論理的に結合して大きなデータセットにすることができます。

Unitils 関係者からのフィードバック:

テスト データベースの自動メンテナンス

データベース テストを作成するときは、次のガイドラインに留意してください。

  • 可能な限り少ないデータを含む小さなテスト データ セットを使用します。データ ファイルでは、テストされたクエリの結合列または where 句で使用される列のみを指定します。
  • データ セットをテスト クラス固有にします。異なるテスト クラス間でデータ セットを再利用しないでください。たとえば、すべてのテスト クラスに対して 1 つの大きなドメイン データ セットを使用しないでください。そうすることで、別のテストに影響を与えずに、あるテストのテスト データを変更することが非常に難しくなります。単体テストを作成していて、そのようなテストは他のテストから独立している必要があります。
  • あまり多くのデータ セットを使用しないでください。使用するデータ セットが多いほど、より多くのメンテナンスが必要になります。そのテストクラスのすべてのテストに対して、テストクラス データ セットを再利用してみてください。テストをより理解しやすく明確にする場合にのみ、メソッド データ セットを使用してください。
  • 予想される結果データ セットの使用を制限します。それらを使用する場合は、テストにとって重要なテーブルと列のみを含め、残りは除外します。
  • 開発者ごとにデータベース スキーマを使用します。これにより、開発者は相互に干渉することなく、テスト データを挿入してテストを実行できます。
  • テスト データベースですべての外部キー制約と非 null 制約を無効にします。このように、データ ファイルには、絶対に必要なデータ以外を含める必要はありません。

過去には、十分なデータを含む小さなデータセットを使用することで、うまく機能していました。確かに、データベースを微調整するとメンテナンスが発生しますが、これは組織によっては管理可能です。

于 2010-06-03T22:33:19.813 に答える