相关疑难解决方法(0)

时间依赖单元测试

我需要测试一个函数,其结果将取决于当前时间(使用Joda时间isBeforeNow()).

    public boolean isAvailable() {
    return (this.someDate.isBeforeNow());
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用Mockito存根/模拟系统时间,以便我可以可靠地测试功能?

java junit

72
推荐指数
3
解决办法
4万
查看次数

Java SE 8 TemporalAccessor.from与java.time.Instant对象一起使用时出现问题

java.time有一个Instant类,它封装了时间轴上的位置(或"时刻").虽然我知道这是秒/纳秒值,因此与时区或时间偏移没有直接关系,但它toString返回格式为UTC日期/时间的日期和时间,例如2014-05-13T20:05:08.556Z.此外anInstant.atZone(zone),anInstant.atOffset(offset)两者都产生一个值,该值与将Instant具有隐含的UTC时区/"零"偏移量视为一致.

因此我原以为:

  • ZoneOffset.from(anInstant) 产生'零' ZoneOffset
  • OffsetDateTime.from(anInstant) 产生一个'零'偏移的日期/时间
  • ZoneId.from(anInstant) (可能)生成UTC ZoneId
  • ZonedDateTime.from(anInstant)(可能)ZonedDateTime用UTC 生成一个ZoneId

ZonedDateTime.from正如我所读到的那样,该文件似乎赞同这一点.

事实上ZoneOffset.from(anInstant)失败了DateTimeException,我想因为这个原因OffsetDateTime.from(anInstant)也失败了,其他两个也失败了.

这是预期的行为吗?

java java-8 java-time

30
推荐指数
3
解决办法
3万
查看次数

如何使用 EasyMock、没有 Joda Time 和 PowerMock 在 Java 8 Web 应用程序中将当前系统时间覆盖为特定日期?

我需要在 Java 8 中模拟时间(到特定日期,这意味着我可能不会使用anyLong())以java.time在 EasyMock 下的测试环境中单独使用,因此没有 Joda Time。

EasyMock 不允许你模拟像LocalDateTime.now(). PowerMock 可以,但我不允许使用 PowerMock。

Joda Time 库提供了一种简洁优雅的方式来模拟时间DateTimeUtils.setCurrentMillisFixed(),并DateTimeUtils.setCurrentMillisSystem()回到现在的瞬间。

只有我不允许使用 Joda Time。

我被告知使用模拟时钟java.time.Clock类实例并将其注入LocalDateTime.now()如下:LocalDateTime.now(mockClock)

有没有办法在没有 Joda TimePowerMock 的情况下正确实现它?

junit easymock junit4 java-8 java-time

5
推荐指数
1
解决办法
2541
查看次数

如何在Java中模拟clock.millis()

我有一个代码,用于计算当前时钟时间与数据库中保存的时间之间的差异,如果两者之间的差异大于特定值,则我相应地返回结果。对于这种情况,我尝试编写测试,但在模拟 Clock.millis() 时遇到问题。我已经提到了一些答案,但没有一个对我有用,有人可以帮助我。这是我的功能

对于我的测试,我想用固定值模拟这个clock.millis()函数,以便每次运行测试时它只使用该值。

java spring-boot java-time

0
推荐指数
1
解决办法
1050
查看次数

标签 统计

java ×3

java-time ×3

java-8 ×2

junit ×2

easymock ×1

junit4 ×1

spring-boot ×1