2

Maven と Surefire プラグインの問題に直面しています。

2 つのテストがtestDatePos.javaありtestDateNeg.javaます。各テストには、環境変数を設定する必要があります。同じ環境変数 ( DATE_SHIFT) ですが、同じ値 ( -1 and 1) ではありません。

pom.xmlこれらのテストを実行するために、mavenのセクション Surefire-plugin を構成することは可能ですか?

testDatePos.javaこれは、mvn test実行中の OKを除外する pom.xmlです (これは解決策ではないことはわかっています)。

<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>
4

1 に答える 1

1

これを行うには、pom で Surefire の 2 つの異なる実行を指定し、各実行をフォークします。

ただし、これは、これらのテストが maven から実行している場合にのみ機能することを意味します。または、少なくとも実行するすべての場所で構成を変更する必要があります。したがって、環境変数を必要とするテストでは、これらの特定のテストの @Before/@After (または @BeforeClass/@AfterClass) にこれを追加します。

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

このように、Maven でテストを実行する必要はありません。おそらく、DATE_SHIFT の元の値を保存し、テストの最後に復元したいと思うでしょう。

于 2012-12-19T10:55:53.717 に答える