0

Camel in action」の本で、次のテスト例を見つけました。

@Test
public void testMoveFile() throws Exception {
    // create a new file in the inbox folder with the name hello.txt and containing Hello World as body
    template.sendBodyAndHeader("file://target/inbox", "Hello World", Exchange.FILE_NAME, "hello.txt");

    // wait a while to let the file be moved
    Thread.sleep(2000);

    // test the file was moved
    File target = new File("target/outbox/hello.txt");
    assertTrue("File should have been moved", target.exists());

    // test that its content is correct as well
    String content = context.getTypeConverter().convertTo(String.class, target);
    assertEquals("Hello World", content);
}

明らかにこれは統合テストです。複数のユニットをテストしますが、

  • そのようなテスト (Thread.sleep を使用) は良い習慣と見なされますか?
  • 統合テストアプローチを残して、もっとうまくやることはできますか?
4

4 に答える 4

1

さて、その鶏と卵。Camel in Action ブックのように、後でスレッド スリープなしでテストできる NotifyBuilder を紹介します。第 6 章、セクション 6.4.2 を参照してください。

Camel の Web サイトhttp://camel.apache.org/notifybuilder.htmlにも NotifyBuilder に関する詳細がいくつかあり ます。

于 2013-09-05T06:17:12.363 に答える
0

スリープせずに最初のチェックを行うループを設定します (不必要なスリープを回避します)。ファイルがまだ存在しない場合、スリープして最大 N 回まで繰り返し、十分な時間内に作成されていない場合は失敗します。

于 2013-09-04T19:48:07.480 に答える
-1

単体テスト戦略については、Dropkick に同意します。単体テストの場合、環境に依存する場合。モック オブジェクトを使用して、環境固有のケースをテストしてみてください。

モック フレームワークを使用して単体テスト ケースを作成する方法については、 MockitoPowerMockを参照してください。

于 2013-09-04T20:20:40.707 に答える