2016-09-13 50 views
1

我发现代码将导致测试失败如果它运行的时间超过timeout毫秒。如果我想让它通过?我有一个功能,我预计会永远挂起。如果它挂起足够长的时间,比如说10000毫秒,那么我认为它是永久悬挂的,测试应该通过。JUnit:测试应该通过,如果它挂了一段时间

@Test(timeout=10000) public void test() { 
    while(true) 
} 
+0

除了该方法永不返回,您的测试会如何确认? – Aelexe

+0

我想测试一下,查询关闭的连接将永远挂起。 (代码重试永久建立连接)。 – Ben

+0

有一个很好的概念叫**快速失败**。当事情破裂时,你想尽快回来。其他任何只是**增加**你的问题。 – GhostCat

回答

2

你说你要test that querying a closed connection will hang forever. (The code retries establishing the connection forever) 所以,你要永远挂程序,每次有人试图查询关闭的连接?

我最好在连接关​​闭时抛出异常。

+0

我的代码是一个开源库的包装。我相信这是图书馆的行为,我无法改变它。 – Ben

+1

我会为该库编写外观,并阻止通过例如查询关闭的连接。抛出异常。然后,我将开始寻找一个永远不会永久挂起的图书馆...... – staszek

+1

顺便说一句,你可以在例如之后停止打开连接。 5000毫秒,然后你可以使用Mockito验证该方法以超过5000秒结束: 'Mocktio.verify(object,Mockito.timeout(6000))。equals(null);' – staszek

相关问题