JUnit测试预期的超时

您所在的位置:网站首页 junit的应用 JUnit测试预期的超时

JUnit测试预期的超时

2023-03-15 18:18| 来源: 网络整理| 查看: 265

我通过TCP套接字测试通信,我希望服务器在发送特定消息时在设定的时间范围内不响应.

服务器行为是我无法控制的.

我知道如果在一个设定的时间范围内没有完成测试,它将如何失败.但是我怎么能做相反的事情,让它在时间框架内没有完成?

@Test (timeout=1000)如果不能在一秒钟内完成测试,我可以使用它来进行测试.

但是,使用Junit 4,是否有一个功能来测试预期的超时作为一个积极的结果?即如果在时间范围内完成测试将失败,如果没有则通过测试将失败?

1> Andremoniy..:

好问题.实际上你只能使用junit工具来做到这一点.我的想法是反转Timeout规则行为+使用注释的expected属性Test.唯一的限制是:您必须将测试放在单独的类中,因为它Rule适用于其中的所有测试:

public class Q37355035 { private static final int MIN_TIMEOUT = 100; @Rule public Timeout timeout = new Timeout(MIN_TIMEOUT) { public Statement apply(Statement base, Description description) { return new FailOnTimeout(base, MIN_TIMEOUT) { @Override public void evaluate() throws Throwable { try { super.evaluate(); throw new TimeoutException(); } catch (Exception e) {} } }; } }; @Test(expected = TimeoutException.class) public void givesTimeout() throws InterruptedException { Thread.sleep(1000); } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3