2

Java Swing GUIをテストするためのいくつかのJUnitテストメソッドを作成しました(FESTを使用)。私のクラスは次の形式です。

public class Tests
{

    @BeforeClass
    public static void beforeClass() throws Exception { ... }

    @Before
    public void before() throws Exception { ... }

    @After
    public void after() throws Exception { ... }

    @AfterClass
    public static void afterClass() throws Exception { ... }

    @Test
    public void testA() { ... }

    @Test
    public void testB() { ... }

    @Test
    public void testC() { ... }

}

このクラスをEclipseで実行すると、testAテストのみが実行され、testBやtestCは実行されません。testAをコメントアウトすると、testBが実行されるため、毎回最初のテストを実行するように見えます。

EclipseのJUnitは、最初のテストが完了した後、「Runs:2/3」を表示しますが、それ以上進行しないか、エラーを表示します。

私が間違っていることはありますか?JUnit4.8.1とFEST1.2を使用しています。

4

2 に答える 2

3

testAコードの実行をブロックするという副作用があると思いますtestBtestAとの詳細なしで何が起こっているのかを言うのは難しいですtestBが、私はあなたにいくつかの一般的なガイダンスを与えることができます。

コメントアウトすることで、良いスタートを切ることができtestAます。これを行うときは、両方testBtestC実行して実行しますか?

テストでとの両方を実行するまで、ドリルダウンしてtestA、下にある詳細をゆっくりとコメントアウトしてみてください。これを実行すると、少なくとも問題がどこにあるかがわかります。testAtestAtestB

たとえば、コードが次のようになっている場合:

public void testA() {
    doX();
    doY();
    doZ();
    // Assert stuff
    ...
 }

後にすべてをコメントアウトして、doX()何が起こるかを確認してください。それが機能する場合は、コメントdoY()を外して何が起こるかを確認します。うまくいかなかった場合は、ドリルダウンしてdoX()コメントアウトし、テストを再実行してください。

これは、問題が発生している場所の詳細を特定するのに役立ちます。これを理解するときにまだ困惑している場合は、戻ってそれらの詳細について質問してください。

バグを見つけて頑張ってください!

于 2011-01-29T14:06:56.537 に答える
0

コードスニペットは問題ないようです。

各@Testメソッドが他のメソッドから独立しているかどうかを確認できます。各テストメソッドは、同じコンテキストを共有するべきではありません。正しい動作を確認@Beforeし、実行します。@After

于 2011-01-29T13:52:38.363 に答える