我正在使用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秒(超时的becoz = 3000)。但它立即返回,报告测试用例失败。
任何人都可以帮我弄清楚上面出了什么问题。如果需要更多详细信息,请与我们联系。
以下是Junit的失败追踪......
java.lang.AssertionError:应该抛出IllegalArgumentException。 在org.junit.Assert.fail(Assert.java:91) at com.comviva.remotefilebrowser.server.RemoteFileCaseTest.testReadFolderWithInvalidFolder(RemoteFileCaseTest.java:94) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at 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) 在org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 在org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) 在org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 在org.junit.internal.runners.statements.FailOnTimeout $ 1.run(FailOnTimeout.java:28)
Junit4超时实现中是否存在错误,或者我在这里遗漏了什么?
因为,如果我在调试模式下运行测试用例(并通过它进行跟踪,那么完成远程执行需要时间,但它确实有效并且测试用例通过)。只有当我选择运行测试用例而不是 debug 时才会出现问题。
感谢和问候, RV
答案 0 :(得分:0)
对不起上述天真的问题。这是一个问题,我使用JSch库例程来读取远程数据。
只是发布在这里,所以它可能会帮助像我这样的新手用户:)
JSch库抛出了一些异常,我没有正确捕获。被调用的方法是捕获异常并立即返回。校正后,它可以正常工作。