java - 针对使用 LocalDateTime 的 api 进行测试

标签 java datetime time

我必须针对内部使用 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/

相关文章:

Java: mytextarea.setText ("hello") + Thread.sleep(1000) = 奇怪的结果

java - 将 App Inventor 2 上传到 Google App Engine,在应用程序配置中发现超过 100 个 URLMap 条目

PostgreSQL 本地时间

python - 在 Python 中导入两个或多个具有相同名称的模块

java - 在游戏更新循环中调用延迟 3 秒的函数

Java 循环遍历数组 - 优化

c# - 在 LINQ 查询中创建 DateTime

language-agnostic - 这种东西叫什么?

time - Big-O:n ^ 2 =Ω(n log n)?

java - 使用 ResultSet.Previous 方法在使用 .mdb 文件 OBDC 的 Java 中不起作用