2009-07-19 8 views
26

私はJUnit 4を使用してeclipseで以下のテストケースを持っています。 何が間違っている可能性がありますか?予想されるJUnitのタグが期待どおりに動作しない

@Test(expected = IllegalArgumentException.class) 
public void testIAE() { 
    throw new IllegalArgumentException(); 
} 

この正確なテストケースでは動作しませんでした期待のタグを自分のコードをテストしようとしたときに約来ました。私は、JUnitが最も基本的なテストに合格するかどうかを見たいと思っていました。それはしませんでした。

私は運がないと予想通りにカスタム例外をテストしました。

スクリーンショット: Screenshot http://www.freeimagehosting.net/uploads/6a995b0db7.png

+2

これは本当に奇妙で、自分でテストしましたが、このコードはうまくいきます(テストは成功しています)。 – Torandi

+0

私はスクリーンショットを追加しました。私は疑わしいでしょう。 –

答えて

71

問題は、あなたのAnnounceThreadTestはTestCaseクラスを拡張することです。 TestCaseを拡張しているため、JUnit RunnerはこれをJUnit 3.8テストとして扱い、Testという単語で始まるためテストが実行されています。つまり、@Test注釈が実際にはまったく使用されていないという事実は隠れています。

これを修正するには、クラス定義から "extends TestCase"を削除します。

+0

ありがとうございます、これは広告として固定されています。 –

+4

拡張TestCaseを削除した後、追加のインポートを追加して、静的なアサートメソッドを確実に確保する必要がありました。 import static org.junit.Assert。*; – burtlo

+6

スクリーンショットのヒントとして隠された解決策を見つける際の素晴らしい仕事 –

3

ただのJUnit 4.4を使用してのIntelliJでこれを実行しました:

@Test(expected = IllegalArgumentException.class) 
    public void testExpected() 
    { 
     throw new IllegalArgumentException(); 
    } 

は完全に渡します。

プロジェクト全体を再構築してもう一度やり直してください。あなたが間違っている何かがあります。 JUnit 4.4は宣伝されたとおりに動作します。

関連する問題