我正面临Maven和Surefire插件的问题。
我有两个测试:testDatePos.java
和testDateNeg.java
,并且每个测试都必须设置一个环境变量。它是相同的环境变量(DATE_SHIFT
)但不是相同的值(-1 and 1
)。
是否可以在maven的pom.xml
中配置surefire-plugin部分来运行这些测试?
这是我的pom.xml,它排除testDatePos.java
让mvn test
运行正常(我知道这不是解决方案):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/testDatePos.java</exclude>
<!-- this test needs the env variable DATE_SHIFT=1 but
the test testDateNeg.java needs it at -1 -->
</excludes>
<environmentVariables>
<DATE_SHIFT>-1</DATE_SHIFT>
</environmentVariables>
</configuration>
</plugin>
答案 0 :(得分:1)
你可以通过在你的pom中指定两个不同的surefire执行来执行此操作,并分配每次执行。
但是,这意味着这些测试仅在您从maven运行它们时才起作用,或者至少您必须在运行它们的任何位置更改配置。因此,对于需要环境变量的测试,我会将其添加到这些特定测试的@ Before / @ After(或@ BeforeClass / @ AfterClass)。
@Before public void before() {
System.setProperty("DATE_SHIFT", "-1");
}
这样,您无需在maven中执行测试即可使用它们。您可能希望存储DATE_SHIFT的原始值并在测试结束时将其恢复。