1

アプリケーションは、CSV、カスタム/タブ区切りなどのレポートを生成し、これらのレポートのテストケースを作成するために、JUnit-4 を使用しています。

ただし、一部のメソッドは、フォーマットされた出力文字列として巨大なデータを返すため、ファイルにダンプする必要があります。今、アサーションの期待される結果を生成するという問題に直面しています。

  1. 次に、それをどのようにシミュレートするか、コードを再度記述する必要がありますか?これは非常に膨大です。
  2. JUnitでコーディングする(元のように再コーディングする)のは良い習慣ですか、私は確かに疑っています。コードが変更された場合、将来的に密結合され、テスト ケースが失敗します。
  3. 巨大なリストを返すメソッドのテストケースを作成する方法、数百に制限することはできますが、期待される結果リストをモックして比較することはできません。
  4. また、ビュー層ではなく、アプリケーション層で Web ベースのアプリケーションの機能をテストするために JUnit を使用しています。大丈夫ですか、それとも HttpUnit のような他のフレームワークに移行する必要がありますか。

編集:データベースから取得した ArrayList として入力を受け取り、レポート用に適切にフォーマットされた文字列として出力を準備するメソッドをテストしています。基本的には、データからCSVを生成します。

また、誰かが単体テストで従わなければならないベスト プラクティスをいくつか指摘できますか。さまざまなオンライン リソースを調べましたが、あまり関係がありません。

4

1 に答える 1

1

単体テストを行っているメソッドは、データを引数として取り、それを CSV に変換するメソッドです。したがって、この変換が機能することをテストするだけでよく、必要最小限のデータを入力して、すべてのケースで実際に機能することを確認する必要があります。

このメソッドは、データベースからデータをフェッチするメソッドとは独立している必要があり、データベースから膨大な量のデータをフェッチしてこのメ​​ソッドの単体テストを行うべきではありません。メモリ内のデータを準備し、テストでデータ変換メソッドに引数として渡すだけです。

List<Foo> data = new ArrayList<Foo>();
data.add(createFooA());
data.add(createFooB());
String csv = myTestedObject.transformToCsv(data);
assertEquals("...", csv);
于 2012-06-04T09:04:57.540 に答える