以下是我的代码。
@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)
任何想法我在这里做错了什么?
答案 0 :(得分:3)
不确定已发布的堆栈跟踪,但我认为@Rule
带注释的字段必须为public
。
答案 1 :(得分:2)
使用@Rule
注释的方法和字段需要公开。此外,您的测试类不应直接或间接扩展junit.framework.TestCase
(因此测试不会作为JUnit3样式的测试运行)。我还建议始终使用@RunWith
答案 2 :(得分:-4)
我相信你应该注释测试本身,告诉它期待异常类型。
尝试将@Test
注释替换为@Test(expected=IllegalArgumentException.class)
,看看它是否适合您。