35

次のテストがあります。

@Test(expected = IllegalStateException.class)
public void testKey() {
    int key = 1;
    this.finder(key);
}

しかし、JUnit は、テストが失敗したことを報告していますが、予想どおりにIllegalStateException.

これを実行するには、何か他の設定を行う必要がありますか?


私は今テストを実行します

@RunWith(Suite.class)
@SuiteClasses(Test.class)
public class TestSuite {

}

この質問のようですが、まだ望ましい結果が得られていません。

testプレフィックスを削除しても、まだエラーが発生します。

これらのテストは Eclipse で実行していると言わざるを得ませんが、Eclipse は JUnit 4 ランナーを使用するように構成されています。

4

8 に答える 8

49

問題は、テストがネストされたクラスが の拡張であるということでしたTestCase。これは JUnit 3 スタイルであるため、アノテーションは機能しませんでした。

これで、テスト クラスはそれ自体がクラスになります。

于 2011-04-05T11:06:34.290 に答える
9
@RunWith(JUnit4.class)
public class MyTestCaseBase extends TestCase 

ベーステストで TestCase クラスを拡張したときに、 @Test(expected = ...) アノテーションにも問題がありました。@RunWith(JUnit4.class) を使用するとすぐに役立ちました(非常にエレガントなソリューションではありません、私は認めます)

于 2014-12-09T18:53:59.310 に答える
7

私はこれを試してみましたが、期待どおりに完全に動作します。

public class SampleClassTest {
    @Test(expected = ArithmeticException.class )
    public void lost(){
        this.lost(0);
    }
    private void lost(int i) throws ArithmeticException {
        System.out.println(3/i);
    }
}

また、junit4 が依存関係として追加されていることを確認してください。@ (注釈) は、junit 4 の新機能です。

于 2012-11-20T11:26:05.943 に答える
6

私は同じ問題に直面しました。解決策は簡単です「TestCaseクラスを拡張しないでください」

于 2014-01-02T11:01:28.387 に答える
3

いいえ、この JUnit テストはそのままで機能するはずです。この側でこれ以上必要なものはありません。

テストがスローすることを確認するものは何IllegalStateExceptionですか? 異なるタイプの別の例外にラップされる可能性はありますか?

JUnit からの正確な失敗メッセージを投稿してください。

@duffymo が示唆したように、テストが実際にスローする例外 (存在する場合) を簡単に確認できます。

于 2011-04-05T10:10:38.903 に答える
2

これは私には正しいように見えます。

仮定を確認してください。例外をスローしてもよろしいですかあなたの言うことが本当なら、期待されるものを注釈から削除すると失敗するはずです。

デバッガーでコードをステップ実行して、何が起こっているかを確認します。IntelliJ のように、それができる IDE があると仮定します。

于 2011-04-05T10:09:56.993 に答える
0

これを JUnit4 でテストしました: この DO は機能し、テストは正常に完了しました。それがaかそのようなものかどうか見てください。IllegalSelectorException

于 2011-04-05T10:12:13.607 に答える