72

Mavenビルドでほとんどの単体テストを実行したいと思います。しかし、1つのプロジェクトには遅いユニットテストがあり、一般的にそれらを除外したいと思います。時々それらをオンにします。

質問:これを行うにはどうすればよいですか?

私は知って-Dmaven.test.skip=trueいますが、それはすべての単体テストをオフにします。

ここで説明する統合テストのスキップについても知っています。しかし、私には統合テストはなく、単体テストだけがあり、maven-surefire-pluginへの明示的な呼び出しはありません。(私はEclipse-MavenプラグインでMaven 2を使用しています)。

4

5 に答える 5

88

このモジュールでのみテストをスキップするのはどうですか?

このモジュールのpom.xml:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.4.2</version>
        <configuration>
          <skipTests>true</skipTests>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

最終的に、テストを無効にするプロファイルを作成できます(モジュールのpom.xmlのまま):

<project>
  [...]
  <profiles>
    <profile>
      <id>noTest</id>
      <activation>
        <property>
          <name>noTest</name>
          <value>true</value>
        </property>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.4.2</version>
            <configuration>
              <skipTests>true</skipTests>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  [...]
</project>

後者のソリューションでは、を実行するmvn clean packageと、すべてのテストが実行されます。を実行するmvn clean package -DnoTest=trueと、このモジュールのテストは実行されません。

于 2009-04-21T14:10:49.727 に答える
38

これは簡単だと思いますし、確実でないテスト (私の場合は FlexUnitTests) で作業できるという利点もあります。

<profile>
   <id>noTest</id>
    <properties>
       <maven.test.skip>true</maven.test.skip>
    </properties>
 </profile>
于 2010-03-11T15:21:48.483 に答える
2

この質問とは少し異なるニーズがあり、役立つかもしれません。コマンドラインから、さまざまなパッケージのいくつかの異なるテストを除外したかったので、1 つのワイルドカードでは実行できませんでした。

正規表現またはワイルドカードの除外のコンマ区切りリストを指定できる除外に関する Maven Failsafe ドキュメント ルールを見つけました: https://maven.apache.org/surefire/maven-failsafe-plugin/examples/inclusion-exclusion。 html

だから私のpomfileは次のようになりました:

<excludes>
    <exclude>${exclude.slow.tests}</exclude>
</excludes>

私のコマンドラインにはこれが含まれていました:

mvn install "-Dexclude.slow.tests=**/SlowTest1.java, **/package/ofslowtests/*.java, **/OtherSlowTest.java"

私にとって重要な要素は、単一の除外ステートメントで一連のテストを 1 つの Maven プロパティに入れることでした。

于 2016-12-08T22:48:56.880 に答える