3

@Test(expected = SomeException.class)JUnit 4では、アノテーションを使用して予期される例外を宣言できます。ただし、理論を使用してテストを行う場合、アノテーションには期待されるプロパティ@Theoryがありません。

理論をテストするときに予想される例外を宣言するための最良の方法は何ですか?

4

2 に答える 2

6

私はExpectedException ルールを使用することを好みます:

import org.junit.rules.ExpectedException;

<...>

@Rule
public ExpectedException thrown = ExpectedException.none();

@Theory
public void throwExceptionIfArgumentIsIllegal(Type type) throws Exception {
    assumeThat(type, equalTo(ILLEGAL));
    thrown.expect(IllegalArgumentException.class);
    //perform actions
}
于 2012-10-24T13:35:26.530 に答える
1

また、通常のを使用することができますassert。古いバージョンのJUnit(4.9より前)で使用できます。

@Test
public void exceptionShouldIncludeAClearMessage() throws InvalidYearException {
    try {
        taxCalculator.calculateIncomeTax(50000, 2100);
        fail("calculateIncomeTax() should have thrown an exception.");
    } catch (InvalidYearException expected) {
        assertEquals(expected.getMessage(),
                     "No tax calculations available yet for the year 2100");
    }
}
于 2012-12-06T16:51:38.663 に答える