surefire插件maven:用于特定测试的env变量

时间:2012-12-18 11:24:20

标签: maven junit maven-surefire-plugin

我正面临Maven和Surefire插件的问题。

我有两个测试:testDatePos.javatestDateNeg.java,并且每个测试都必须设置一个环境变量。它是相同的环境变量(DATE_SHIFT)但不是相同的值(-1 and 1)。

是否可以在maven的pom.xml中配置surefire-plugin部分来运行这些测试?

这是我的pom.xml,它排除testDatePos.javamvn 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>

1 个答案:

答案 0 :(得分:1)

你可以通过在你的pom中指定两个不同的surefire执行来执行此操作,并分配每次执行。

但是,这意味着这些测试仅在您从maven运行它们时才起作用,或者至少您必须在运行它们的任何位置更改配置。因此,对于需要环境变量的测试,我会将其添加到这些特定测试的@ Before / @ After(或@ BeforeClass / @ AfterClass)。

@Before public void before() {
  System.setProperty("DATE_SHIFT", "-1");
}

这样,您无需在maven中执行测试即可使用它们。您可能希望存储DATE_SHIFT的原始值并在测试结束时将其恢复。