3
は使用してこのようなシナリオが可能ですジュニット?JUnitの条件ティアダウン
は使用してこのようなシナリオが可能ですジュニット?JUnitの条件ティアダウン
TestRuleでこれを行うことができます。 TestRule
を使用すると、テストメソッドの前後にコードを実行できます。テストで例外(またはアサーションに失敗した場合はAssertionError)がスローされた場合、テストは失敗し、tearDown()はスキップできます。例は次のようになります。あなたがメソッドの@After注釈を持っている必要はありませんので、あなたは、手動でティアダウンを呼んでいる
public class ExpectedFailureTest {
public class ConditionalTeardown implements TestRule {
public Statement apply(Statement base, Description description) {
return statement(base, description);
}
private Statement statement(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
try {
base.evaluate();
tearDown();
} catch (Throwable e) {
// no teardown
throw e;
}
}
};
}
}
@Rule
public ConditionalTeardown conditionalTeardown = new ConditionalTeardown();
@Test
public void test1() {
// teardown will get called here
}
@Test
public void test2() {
Object o = null;
o.equals("foo");
// teardown won't get called here
}
public void tearDown() {
System.out.println("tearDown");
}
}
注意、それ以外の場合は二回呼び出されます。より多くの例については、ExternalResource.javaとExpectedException.javaをご覧ください。
ありがとうございます。それは良い助けだった..まさに私が必要なもの.. – vpradhan