我必须针对使用内部LocalDateTime.now()
的api编写一些测试,用这个值做一些东西并返回一个很长的String(~1MB)。
我想编写一些回归测试,以确保即使api的新版本发布,结果也是一样的。
可悲的是,测试结果每次都不同,因为LocalDateTime.now()
总是返回不同的值(惊讶,惊讶......)
是否有可能以某种方式将LocalDateTime.now()
的结果修复为硬编码值。
由于它只需要在某些单元测试中工作,因此也欢迎使用脏解决方案。
答案 0 :(得分:0)
选项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模拟的方法包装调用。