1

我正在使用 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 超时实现中是否存在错误,或者我在这里遗漏了什么?

因为,如果我在调试模式下运行测试用例(并跟踪它,那么完成远程执行需要时间,但它确实有效并且测试用例通过了)。只有当我选择运行测试用例而不是调试它时才会出现问题。

谢谢和问候, 房车

4

1 回答 1

1

对不起,上面的幼稚问题。方式有问题,我使用 JSch 库例程来读取远程数据。

只是在这里发帖,所以它可以帮助像我这样的新手用户:)

JSch 库抛出了一些异常,我没有正确捕获。被调用的方法正在捕获异常并立即返回。更正后,它可以正常工作。

于 2012-04-22T19:01:15.583 回答