Java 为Eclipse上的单个测试设置时区
正如我所解释的,我正在为我的Hibernate DAO实现编写测试,当我使用Maven或在Eclipse上使用Java 为Eclipse上的单个测试设置时区,java,eclipse,oracle,testing,junit,Java,Eclipse,Oracle,Testing,Junit,正如我所解释的,我正在为我的Hibernate DAO实现编写测试,当我使用Maven或在Eclipse上使用runas->Maven测试时,它们运行良好。该应用程序使用Oracle,因此我必须定义时区,并在pom文件中添加Duser.TimeZone,如前所述 问题是,当我只想执行一个测试方法时,因为每个方法在Eclipse上都有自己的运行配置,并且在每个配置的VM参数中添加时区令人失望 我已尝试将System.setProperty(“user.timezone”、“UTC”)和timezo
runas->Maven测试时,它们运行良好。该应用程序使用Oracle,因此我必须定义时区,并在pom文件中添加Duser.TimeZone
,如前所述
问题是,当我只想执行一个测试方法时,因为每个方法在Eclipse上都有自己的运行配置,并且在每个配置的VM参数中添加时区令人失望
我已尝试将System.setProperty(“user.timezone”、“UTC”)
和timezone.setDefault(新的SimpleTimeZone(…)
添加到@beforeClass
方法中,但它不起作用。它显示错误ORA-01882:未找到时区区域
。我认为原因是@ContextConfiguration
在@beforeClass
方法之前连接到数据库
我找到了一个变通方法,将其作为默认参数添加到VM中。我已经在Windows->Preferences->Installed JREs
上完成了这项工作
您知道更好的方法吗?好吧,如果您对@Configuration类干预DB的说法是正确的,那么一个选项就是在@Configuration类的静态块中执行System.setProperty。谢谢您的回答,它解决了这个问题。对于那些从未使用过静态块的人(比如我),下面是我必须在类的开头添加的代码:static{System.setProperty(“user.timezone”,“…”);}
@rafaborrego-你必须重置时区吗?i、 e.System.setProperty
是一个永久的JVM范围的级别设置AFAIK。现在我遇到的问题是在@BeforeClass
中,System.getProperty(“user.timezone”)
返回null。我想在@BeforeClass
中获取当前值,然后在@AfterClass
中重置它。