2009-03-10 5 views
3

私はたとえば、JUnitの3を使用して(JUnitの4のように)チェック例外を実装したい、私はこのようなテストを書くことができるようにしたいと思います:JUnit 3の例外処理動作をどのようにカスタマイズしますか?

public void testMyExceptionThrown() throws Exception { 
    shouldThrow(MyException.class); 

    doSomethingThatMightThrowMyException(); 
} 

これはMyExceptionがある場合にのみ成功する必要がありますスローされる。 JUnitにはExceptionTestCaseクラスがありますが、各テスト*メソッドが使用するかどうかを決めることができます。これを達成する最良の方法は何ですか?

答えて

9

ソリューションになります。

public void testMyExceptionThrown() throws Exception { 
    try { 
     doSomethingThatMightThrowMyException(); 
     fail("Expected Exception MyException"); 
    } catch(MyException e) { 
     // do nothing, it's OK 
    } 
} 

はあなたが考えている何のために適していますか?

this threadもご覧ください.JUnit3のプロキシソリューションが作成されました。このソリューションは、問題を解決する別の可能性があると思われます。

1

最も簡単な方法は、Execute Aroundイディオムを使用して、通常作成するtry-catchを抽象化することです。

さらに高度なのは、TestCaseがちょうどTestであることです。私は詳細を忘れていますが、フレームワークが最初にrun(TestResult)Testで指定されている)によって呼び出すテストの実行をオーバーライドできます。このオーバーライドでは、Execute Aroundのようにtry-catchを配置することができます。 testXxxメソッドは、setメソッドを呼び出して、予想される例外の種類をインストールする必要があります。 catch-exception

2

すでにJUnit3(および他のテストフレームワーク)と一緒に使用することができるものがあるので、独自のソリューションを実装する必要はありません。

関連する問題