gpt4 book ai didi

java - Powermock withArguments 调用变量输入

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:38 25 4
gpt4 key购买 nike

我有测试和正在测试的类,它在文件名中使用时间。

测试代码:

SimpleDateFormat simpleDateFormatTimestamp = new SimpleDateFormat("yyMMddHHmmss");

String outputpath= inboundDir+inboundFilePrefix+simpleDateFormatTimestamp.format(new Date())+".txt";
PowerMockito.whenNew(File.class).withArguments(outputpath).thenReturn(outputFileToInboundDir);

被测类代码:

File outputFile=new File(inboundDir+inboundFilePrefix+simpleDateFormatTimestamp.format(new Date())+".txt");

此外,在测试和测试类中,我还有其他新文件调用,因此我无法使用 withAnyArguments 模拟。当我使用 withAnyArguments 时,所有新文件调用只会返回一个模拟。

我的测试用例有时会通过,有时会失败,具体取决于测试和被测类是否在同一秒内运行(“yyMMddHHmmss”)。

当类和测试在不同的时间执行时,如何消除此测试失败。

谢谢

最佳答案

这是一种可能的解决方案。

String outputpath= inboundDir+inboundFilePrefix+simpleDateFormatTimestamp.format(new Date())+".txt";
PowerMockito.whenNew(File.class).withAnyArguments().thenAnswer(invocation -> {
String firstArgument = (String) invocation.getArguments()[0];
// do a pattern matching for firstArgument with a regex containing date in it.
// if its true then return outputpath
// else return something else
});

我们本可以使用 ArgumentCaptor,但是 PowerMockito.whenNew 不支持这一点。

关于java - Powermock withArguments 调用变量输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50687610/

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