3

しばらくの間、たとえば5秒間テストし、何も問題がない場合はテストに合格したいと思います。これは注釈で可能ですか?のような@Test(uptime=5000)ものを使用できますか?

4

1 に答える 1

7

質問を編集した後に回答を修正

基本的に、ここで間違ったことをテストしているように感じます。「何も起こらない」ことが成功の兆候であるのは非常に奇妙に思えます。

アルゴリズムが失敗することなく一定時間実行できることを証明したい場合は、実際に1つのサイクルを抽出してから、次のようなテストを記述します。

@Test
public void fineForFiveSeconds() {
    long start = System.nanoTime();
    long end = start + TimeUnit.SECONDS.toNanos(5);
    while (System.nanoTime < end()) {
        test.executeOneIteration();
    }
}

このようにして、動作中のコードなどを強制終了する必要のある別のスレッドがありません。

元の回答

この回答は、タイムアウトが失敗ではなく成功の兆候であると質問が示すに書かれました。

アノテーションにtimeout属性が必要なだけだと思います。@Test

@Test(timeout = 5000)

ドキュメント付き:

オプションで、タイムアウトをミリ秒単位で指定して、そのミリ秒数より長くかかる場合にテストメソッドが失敗するようにします。

于 2013-03-07T04:02:12.813 に答える