gpt4 book ai didi

java - 如何在 JUnit 测试用例中设置运行时超时

转载 作者:太空宇宙 更新时间:2023-11-04 07:06:18 30 4
gpt4 key购买 nike

我使用 JUnit v4 作为测试框架。我想知道如何在测试用例中设置运行时超时?

我正在使用参数化测试。其中我有一个 Scenario 列表,其中包含超时值和一些其他字段。这些场景中的每一个都可能有不同的2个超时。

timeout 参数并不能帮助我实现这一目标。

@Test(timeout = getTimeOut())
public void secureLoginWithLongUsername() {
// Test case goes here

}

private final long getTimeOut() {
// I am doing some processing here to calculate timeOut dynamically
long timeOut = scenario.getTimeOut();
return timeOut;
}

@Parameters
public static Collection<Scenario[]> getParameters() {

List<Scenario[]> scenarioList = new ArrayList<Scenario[]>();
Configuration config = new Configuration();
List<Scenario> scenarios = config.getScenarios();
for (Scenario scenario : scenarios) {
scenarioList.add(new Scenario[] { scenario });
}

return scenarioList;
}

public class Configuration {
private List<Scenario> scenarios;
//Some processing here
public List<Scenario> getScenarios() {
return scenarios;
}
}

public class Scenario {
private long timeOut;
private String name;
//Some more fields here
}

请帮助我找出动态设置超时的任何替代方案。

最佳答案

我认为,你需要自己构建它,例如:

private Timer timer;

@After
public void terminateTimeout() {
if (timer != null) {
timer.cancel();
timer = null;
}
}

@Test
public void testTimeout() throws Exception {
setTimeout(1000);
// run test...
}

private void setTimeout(int duration) {
final Thread currentThread = Thread.currentThread();
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
currentThread.interrupt();
}
}, duration);
}

关于java - 如何在 JUnit 测试用例中设置运行时超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21329288/

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