我想在不同时区运行单元测试用例和集成测试用例。
sbt测试(格林尼治标准时间) sbt it:test(在gmt中)
是否可以在gmt中运行它们?
答案 0 :(得分:1)
我有点怀疑是否有一种通用,可靠的方式来做到这一点。
据我所知,推荐的方法是假设计算机(服务器)使用UTC时间,而您完全不依赖计算机所在的时区。您可以存储与用户某种程度上相关的时区设置,然后可以通过更改传递的设置来轻松地进行更改。 (java.time
在Local
和Zoned
单位之间进行区分是有原因的。
如果您想动态更改程序看到的时间,则可能必须使用libfaktime之类的东西来拦截对系统时钟的所有调用。您也许可以mix that with Docker来简化在不同时间运行一项测试,而在不同时间运行另一项测试的问题。
我想在很多情况下会有一些技巧可以避免所有这些事情……但是,如果我们所知道的是,您想在不同时区运行2个测试,而无需任何有关库,操作系统等的知识那么很难推荐更好的东西。
答案 1 :(得分:0)
$ 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
)。