【发布时间】:2016-09-18 05:04:46
【问题描述】:
我通过 TCP 套接字进行了通信测试,我希望服务器在我发送特定消息时不会在设定的时间范围内响应。
服务器的行为是我无法控制的。
如果测试没有在设定的时间范围内完成,我知道如何失败。但是我怎么能做相反的事情,让它在时间范围内没有完成呢?
如果没有在一秒钟内完成,我可以使用@Test (timeout=1000) 使测试失败。
但是,使用 Junit 4,是否有一个函数可以测试预期的超时作为肯定结果? IE。如果在时间范围内完成则测试失败,否则通过?
【问题讨论】:
-
超时是否抛出异常?如果是这样,您可以测试该超时异常。
-
这个要小心,我觉得你不能
expecttimeout抛出的异常。您可以使用计时器或只检查操作的时间,然后,如果它超过您想要的时间,则抛出您期望的异常。不过似乎效率不高。 -
另外,测试的目的究竟是什么?如果它超出了服务器下游代码的范围,我不确定在您的端进行测试有多大好处。如果您希望您的代码能够处理超时,那么您应该只模拟套接字并抛出异常。
标签: java unit-testing testing junit