我想为从Eclipse运行的所有JUnit测试指定一个特定的Eclipse VM argument
,即
-Dlog4j.configuration=log4j-dev.properties
这是因为我想要所有JUnit测试而不是默认的log4j.properties
文件来获取特定的log4j配置文件。
到目前为止,我必须为每个JUnit测试指定上面的VM argument
(在Run Configurations -> Arguments -> VM arguments
中),这使得它很麻烦,因为我有很多测试。
答案 0 :(得分:31)
您不需要为JVM提供不同的属性名称。日志记录代码使用类路径搜索log4j.properties
文件。因此,您需要做的就是确保您的测试log4j.properties
文件位于发布文件之前的位置。
我使用Maven,它在目录中放置文件以使其变得容易。我的版本log4j.properties
位于src/main/resources
目录中。我的测试版本在src/test/resources
。 Eclipse构建路径(类路径)设置为在src/test/resources
之前搜索src/main/resources
,因此您的单元测试使用测试文件。 JAR(或WAR)构建指令使用src/main/resources
中的文件。
答案 1 :(得分:1)
Eclipse使您能够定义应用于使用该VM的任何启动的默认VM参数。您可以在您的情况下使用它来定义具有您想要的log4j的VM参数的JRE配置,然后设置所有JUnit启动以使用该JRE定义。
在偏好设置中, Java > 已安装的JRE 并使用添加... 按钮定义JRE。在 JRE定义对话框中,有一个默认VM参数的字段。为此JRE定义提供一个有用的名称,例如“JDK 7 for JUnit”,以便您可以轻松识别它。
然后在JUnit启动中,在 JRE 选项卡上,选择您创建的JRE定义。