【发布时间】:2020-09-14 03:13:04
【问题描述】:
我想在不同的时区运行我的单元测试用例和集成测试用例。
sbt 测试(格林威治标准时间) sbt it:test(在 GMT 中)
有没有办法在 gmt 中运行它们?
【问题讨论】:
我想在不同的时区运行我的单元测试用例和集成测试用例。
sbt 测试(格林威治标准时间) sbt it:test(在 GMT 中)
有没有办法在 gmt 中运行它们?
【问题讨论】:
我有点怀疑是否存在一种通用、可靠的方法。
据我所知,推荐的方法是假设计算机(服务器)使用 UTC 时间,而您根本不依赖计算机所在的时区。您可以存储与用户相关的时区设置,然后您可以通过更改传递的设置来轻松更改。 (java.time 区分 Local 和 Zoned 单位是有原因的)。
如果您想动态更改程序看到的时间,那么您可能必须使用类似libfaktime 的东西来拦截对系统时钟的所有调用。您可能可以mix that with Docker 更轻松地在不同时间运行一个测试,在不同时间运行另一个测试。
我想在很多情况下会有一些技巧可以让你避免所有这些......但如果我们只知道你想在不同的时区运行 2 次测试而不需要任何关于库、操作系统等的知识那么就很难推荐更好的了。
【讨论】:
$ date
2021-06-25T15:42:23 UTC
$ TZ=Europe/Chisinau date
2021-06-25T18:42:44 EEST
如果由于某种原因应用程序不尊重TZ 变量,您也可以使用bubblewrap (bwrap --bind / / --bind /usr/share/zoneinfo/Europe/Chisinau /etc/localtime)。
【讨论】: