gpt4 book ai didi

java - Junit 想在一定时间后停止该方法

转载 作者:行者123 更新时间:2023-12-04 13:50:29 24 4
gpt4 key购买 nike

我有一个 junit 测试类。测试类读取文件并向 telnet 服务器发送消息。处理可能需要 1 到 5 小时,具体取决于文件中的消息编号。我希望这个测试类在之后停止在属性文件中配置的一定时间。下面是我的代码。

public void sendMessage() throws InterruptedException {
final long timetorun = Long.valueOf(props.getMap().get("timetorun"))
.longValue();

try {

System.out.println("duration : " + duration);
while (duration < timetorun) {
endTime = System.currentTimeMillis();
duration = endTime - startTime;
logger.info("Sending Message");
telnetUtils.run(telnetClient);
// sendMessage();
}
} catch (Exception e) {
e.printStackTrace();
}
}

假设运行时间为 1 小时这里的问题是如果 telnetUtils.run(telnetClient);需要超过 1 小时,此逻辑将不起作用。

任何人都可以就如何实现这一目标提供一些帮助。

最佳答案

您可以在测试用例上设置超时。例如:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;


public class TestTimeout {
private long startAt;
@Before
public void before() {
this.startAt = System.currentTimeMillis();
}
@After
public void after() {
System.out.println(String.format("Total time: %1$d ms", System.currentTimeMillis() - startAt));
}
@Test(timeout=1000)
public void timeout() throws InterruptedException {
Thread.sleep(2000);
}
}

由于超时,测试失败。它在标准输出中写入:

Total time: 1001 ms

关于java - Junit 想在一定时间后停止该方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12909196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com