gpt4 book ai didi

java - 测试需要长时间执行的方法

转载 作者:行者123 更新时间:2023-12-02 11:31:24 27 4
gpt4 key购买 nike

假设我有这样的方法:

public int toTest() {
try { Thread.sleep(60 * 1_000); }
catch (InterruptedException ignored) {}
return 8;
}

我想测试一下,例如检查返回值是否正确,如下所示:

@Test
public void test() {
int actual = toTest();
assertThat(actual).isEqualTo(8);
}

有什么方法可以“模拟”时间流逝,以便在测试执行期间我不会被迫等待整分钟?

编辑:可能我把我的问题描述得太具体了。我不想专注于这一分钟,而是想绕过它。甚至可能有 100 天,但我的问题是是否有方法来模拟这个时间流逝。

就像在项目 react 器方法中使用虚拟时间 https://projectreactor.io/docs/test/snapshot/api/reactor/test/StepVerifier.html#withVirtualTime-java.util.function.Supplier-

最佳答案

您可以使用 Powermock 来实现这一点。

// This will mock sleep method
PowerMock.mockStatic(Thread.class, methods(Thread.class, "sleep"));

PowerMockito.doThrow(new InterruptedException()).when(Thread.class);
Thread.sleep(Mockito.anyLong());

在类(class)开始时,您需要添加此内容

@PrepareForTest(YourClassToWhich_ToTest_MethodBelong.class)

关于java - 测试需要长时间执行的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49278486/

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