ExpectedException.expect不起作用。 JUnit的

时间:2015-03-22 21:38:44

标签: java junit

以下是我的代码。

@Rule
private ExpectedException m_exception = ExpectedException.none();



@Test
public void testDecode()
{   
    m_exception.expect(IllegalArgumentException.class);
    throw new IllegalArgumentException();

}

当我运行此测试时,它失败了,

[junit] java.lang.IllegalArgumentException
[junit]     at com.sonicsw.mf.framework.util.test.URLUtilityTest.testDecode(URLUtilityTest.java:60)
[junit]     at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[junit]     at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:424)
[junit]     at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138)

任何想法我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

不确定已发布的堆栈跟踪,但我认为@Rule带注释的字段必须为public

答案 1 :(得分:2)

使用@Rule注释的方法和字段需要公开。此外,您的测试类不应直接或间接扩展junit.framework.TestCase(因此测试不会作为JUnit3样式的测试运行)。我还建议始终使用@RunWith

注释JUnit4样式的测试

答案 2 :(得分:-4)

我相信你应该注释测试本身,告诉它期待异常类型。

尝试将@Test注释替换为@Test(expected=IllegalArgumentException.class),看看它是否适合您。