我必须针对内部使用 LocalDateTime.now()
的 api 编写一些测试,使用该值执行一些操作并返回一个相当长的字符串 (~1MB)。
我想编写一些回归测试,以确保即使出现新版本的 api,结果也是相同的。
遗憾的是,测试结果每次都不同,因为 LocalDateTime.now()
总是返回不同的值(惊喜,惊喜......)
是否可以以某种方式将 LocalDateTime.now()
的结果修复为硬编码值。
由于它只需要在一些单元测试中工作,脏解决方案也是受欢迎的。
最佳答案
选项 1:使用 Powermock 模拟静态方法
您可以通过模拟静态方法并在每次调用时返回正确的对象来实现此目的。
@PrepareForTest(LocalDateTime.class) //This is added added at test class
PowerMockito.mockStatic(LocalDateTime.class);
Mockito.when(LocalDateTime.now()).thenReturn(firstLocalDateTime);
Mockito.when(LocalDateTime.now()).thenReturn(secondLocalDateTime);
参见https://github.com/jayway/powermock/wiki/MockitoUsage#mocking-static-method
选项 2 将调用包装在无需使用 powermock 即可模拟的方法中。
关于java - 针对使用 LocalDateTime 的 api 进行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37416029/