我正在使用 Junit 4.x 来测试一种方法。
被测方法预计会抛出 IllegalArgumentException。该方法是一种阻塞方法(同步),它在内部使远程 ssh 连接执行脚本并捕获结果,或抛出异常。
为了测试这一点,我编写了如下的 JUnit 测试代码。
@Test (timeout=3000, expected=IllegalArgumentException.class)
public final void testReadFolderWithInvalidFolder() {
final String folder = "/home/rv_nath/xxxyyyZzz";
rfc.readFolder(folder);
}
上面的 testReadFolder() 方法应该在检查是否抛出预期的异常之前等待最多 3 秒(因为 timeout=3000)。但它会立即返回,报告测试用例失败。
谁能帮我弄清楚上面出了什么问题。如果需要更多详细信息,请告诉我。
这是来自 Junit 的故障跟踪...
java.lang.AssertionError:应该抛出 IllegalArgumentException。在 org.junit.Assert.fail(Assert.java:91) 在 com.comviva.remotefilebrowser.server.RemoteFileCaseTest.testReadFolderWithInvalidFolder(RemoteFileCaseTest.java:94) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:616) 在 org.junit.runners。 model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java :41) 在 org.junit.internal。
Junit4 超时实现中是否存在错误,或者我在这里遗漏了什么?
因为,如果我在调试模式下运行测试用例(并跟踪它,那么完成远程执行需要时间,但它确实有效并且测试用例通过了)。只有当我选择运行测试用例而不是调试它时才会出现问题。
谢谢和问候, 房车