4

簡単な JUnit の質問。GUIの起動と多くのことを行う単体テストを実行しています。

試験後に結果を見て視覚的に確認したい。ただし、必要に応じて、コードの最後に到達して終了します。これをオーバーライドしたい場合は、テストの最後の行にブレークポイントを置きます。これはかなり厄介ですが。

終了しないようにするオプションはありますか?

4

4 に答える 4

3

テストの実行中に GUI とユーザーの操作が必要になるため、これは「単体」テストではなく「機能」テストです。

最後に結果をファイルに書き込むことができます。これには、出力が正しいか、最後にプログラムで存在すると主張できるという追加の利点があります。テストを実行し続けたい場合は、テストの最後に無限ループを挿入できます。

JUnit 3:

public void tearDown() {
    while (true) { Thread.sleep(2000); };
}

JUnit 4:

@After
public void tearDown() {
    while (true) { Thread.sleep(2000); };
}

これにより、JUnit スレッドの実行が維持されますが、GUI イベントが別のスレッドで処理されていることを確認する必要があります。

于 2010-03-29T20:22:17.930 に答える
1

Eclipse の場合: 構成を実行... > テスト > JUnit を実行し続ける...

于 2010-03-29T20:14:50.787 に答える
0

カウントダウンするカウントダウンラッチを使ってみませんか。

private static CountDownLatch countdown = new CountDownLatch(1);

@AfterClass
public static void tearDownClass() throws Exception {
    countdown.await();
}

次に、コードの別の場所で、イベントのラッチをカウントダウンします。

countdown.countDown();

countdown.countDown()呼び出されると、countdown.await()続行します。

于 2010-03-30T16:57:03.970 に答える
0

1 つの可能性は、JUnit テストが、おそらく基本クラスで、GUI をシャットダウンする teaDown() メソッドを実行していることです。その場合は、JUnit テストで tearDown() メソッドをオーバーライドして、この動作を防ぐことができます。例えば

protected void tearDown()
{
   //do nothing
}
于 2010-03-29T20:16:08.467 に答える