【发布时间】:2015-03-07 05:34:59
【问题描述】:
我创建了一个类似于@RunWith parameterized.class 的@Rule,以便所有测试用例都可以使用不同的参数重复测试(我不能直接使用 parameterized.class,因为我的测试类已经有 @Runwith 用于其他目的)。
但是,@Rule 在测试以下方法时不起作用:
@Test
public void fooTest() {
/*exception is an ExceptedException initialized somewhere else as:
*@Rule public ExpectedException exception = ExpectedException.none();
*/
exception.expect(A);
exception.expectMessage(B);
someTestWhichThrowExceptionOfB();
}
事实上,如果我将参数硬编码为一个值,则测试通过,因为它确实抛出了 B 的异常。 但是,如果我设置我的参数 = MyParameterRule.value(),测试也会抛出 B 异常,但随后失败并说它失败是因为 B 异常?
我猜在第二种情况下,如果我使用 MyParameterRule,那么异常不起作用?那么为什么?如何让它仍然工作?
【问题讨论】: