gpt4 book ai didi

java - 以当前时间为条件处理单元测试

转载 作者:太空狗 更新时间:2023-10-29 22:49:46 25 4
gpt4 key购买 nike

我正在尝试为我正在处理的项目中的一些实用程序类设置单元测试,其中一个类(包含许可信息)有一种方法可以根据当前时间进行一些确定。

即许可证包含到期日期,许可证字符串验证该日期,但查看许可证是否过期的实际逻辑是基于当前时间。

public boolean isValid()
{
return isLicenseStringValid() && !isExpired();
}

public boolean isExpired()
{
Date expiry = getExpiryDate();
if( expiry == null ) {
return false;
}

Date now = new Date();

return now.after( expiry );
}

因此,我不确定该怎么做,因为“new Date()”不是静态标准。

  1. 难道我不应该费心去测试“isValid”,而是单独测试“isLicenseStringValid()”和“getExpiryDate()”函数吗?
  2. 我是否只在测试中使用过期时间过长的许可证 key ,这样我就可以在它过期时换工作?
  3. 我是否尝试将“new Date()”模拟为某种“getCurrentTime()”方法,以便我可以伪造现在几点?

其他人通常如何处理时间条件测试?

最佳答案

绝对模拟 new Date()

使用 getCurrentTime() 方法或类似方法创建一个 Clock 接口(interface)。这样你就可以拥有一个用于测试的 FakeClock 和一个使用 System.currentTimeMillis() 或其他任何东西的 SystemClock

我已经这样做了很多次——效果非常好。这也是合乎逻辑的——实际上你需要一个“当前时间服务”,所以它应该像任何其他依赖项一样被注入(inject)。

关于java - 以当前时间为条件处理单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3459139/

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