Java 为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

正如我所解释的,我正在为我的Hibernate DAO实现编写测试,当我使用Maven或在Eclipse上使用
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
中重置它。