java - 如何阻止 jUnit 将时区数据从我的 PC 提取到测试中?

标签 java junit

我对之前在西海岸进行的一个项目进行了一系列测试,目前这些测试都失败了。我现在处于中部时间,测试是用 PDT 中的日期和时间硬编码的。它适用于位于不同时区的团队,因此我不能只对 CDT 进行硬编码。我有哪些选项可以让 jUnit 停止从系统中提取我的时区?

最佳答案

您需要重构代码。我假设您在代码中的某处硬编码了 ZonedDateTime.now() 或类似的内容。说

public void method() {
    method1(ZonedDateTime.now());
}

所以,不可能控制传递你自己的值,注入(inject)它。应该变成:

public void method(ZonedDateTime zdt) {
    method1(zdt);
}

现在代码变得可测试,您可以传递任何您想要的值,例如您可以使用您需要的任何时区作为分区日期时间来解析字符串。

关于java - 如何阻止 jUnit 将时区数据从我的 PC 提取到测试中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46158463/

相关文章:

java - 确定包含来自 Sun bug 数据库的修复的 JRE 版本

java - Spring jUnit 测试属性文件

java - 如何模拟DynamoDB批量保存?

java - 字符串的断言失败消息包含子字符串

java.io.NotSerializedException : com. mysql.jdbc.DatabaseMetaData

java - 编译器或 JVM 是否强制执行 hashCode/equals 约定?

java - 正则表达式示例

java - JPA EntityManager 在 @Transactional 方法之后阻塞

java - 使用 JPA 和 JUnit 测试时如何一致地删除内存数据库中的 H2

java - 从 HashMap 中检索信息