5

Eclipse (Neon) 内で実行されている JUnit を使用して単体テストを行っている Java コードがいくつかあります。テスト中のコードにバグがあり、無限ループに陥る場合があります。もちろん、JUnit の実行は終了しません。テスト実行を強制終了するにはどうすればよいですか?

テスト実行を停止するためのボタン (「JUnit テスト実行の停止」) がうまく機能しません。GUI はテスト実行を停止したと考えているようですが、CPU アクティビティ (topたとえば、を使用) を見ると、 Java スレッドはまだ実行中です。kill シグナルを送信することで、自分でスレッドを強制終了できます。しかし、それはくだらないようで不便です。Eclipse自体で利用できるより良い方法はありますか?

4

3 に答える 3

7

赤いボタンを使用して、コンソール ビューからそれを強制終了します。これにより、プロセスが停止します。

ここに画像の説明を入力

junitビューから停止すると、停止するように求められるだけです。

于 2013-08-05T12:30:52.217 に答える
5

@Testアノテーション内でタイムアウトを指定することにより、JUnit でこのようなことを処理できます。例えば:

// Simple test-case which will always fail with time-out
@Test(timeout = 1000 * 60) throws Exception // 60 seconds 
public void testSomething() {
    for (int i = 0; i < 100; i++) {  // 100 seconds
        Thread.sleep(1000);
    }
}

テスト メソッドが時間内に終了しない場合、JUnit はそれを中断し、テストの失敗を報告します。上記の例では、次のようになります。

java.lang.Exception: test timed out after 60000 milliseconds
    at java.lang.Thread.sleep(Native Method)
    at my.package.Test1.testSomething(Test1.java:12)
于 2017-06-27T11:01:20.530 に答える