49

Maven には、統合テスト フェーズのライフサイクル用に定義された数百のテストがあり、完了するまでに長い時間がかかります。

私がやりたいことは、 で 1 つのテストだけを実行することですintegration-test。私はやってみました:

mvn -Dtest=<my-test> integration-test

しかし、それは機能しません。は-Dtest、統合テスト フェーズではなく、単体テスト ゴールのテストのみを実行します。代わりに を試しました-Dintegration-test=<my-test>が、無視されました。

それを行う方法はありますか?


私の構成は次のとおりです。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <executions> 
        <execution> 
            <id>surefire-it</id> 
            <phase>integration-test</phase> 
            <goals> 
                <goal>test</goal> 
            </goals> 
            <configuration> 
                <excludes> 
                    <exclude>none</exclude> 
                </excludes> 
                <includes>
                    <include>**/api/**</include> 
                </includes> 
    ..... 
4

9 に答える 9

46

Maven フェイルセーフ プラグインを使用している場合は、it.testプロパティを完全修飾テスト クラス名に設定することで、単一の統合テストを実行できます。

mvn -D it.test=your.TestCase verify

詳細については、フェイルセーフ プラグインのドキュメントを参照してください

于 2011-04-20T07:54:07.590 に答える
29

Failsafeのドキュメントでは、次のようにテストを指定する必要があります。

mvn -Dit.test=BrokenIT verify

ただし、-Dit.testはもはや機能していないようです。むしろ、Surefire テストを指定するために使用される同じパラメーターが、Failsafe でも機能するようです。例えば:

mvn -Dtest=WorksIT verify

ドキュメントを修正するために、バグ(編集: 2.12 では「再現不可」としてクローズされました) を提出しました。

于 2011-07-26T20:21:54.803 に答える
5

追加するだけ-DfailIfNoTests=falseでtestNGで動作します。このようなもの:

mvn integration-test -Dtest=aITest -DfailIfNoTests=false
于 2014-09-04T10:37:27.577 に答える
3

私はこれに苦労し、統合テストを 1 つだけ実行したいときに使用する追加のプロファイルを作成しました。ここで適切な部分だけを正常に抽出できたことを願っています。

    <profile>
        <id>integrationTestSingle</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>surefire-it</id>
                            <phase>integration-test</phase>
                            <goals>
                                <goal>test</goal>
                            </goals>
                            <configuration>
                                <includes>
                                    <include>**/integration/**/${test}.java</include>
                                </includes>
                                <skipTests>false</skipTests>
                            </configuration>
                        </execution>
                    </executions>
                    <configuration>
                        <argLine>-Xms256M -Xmx768M -XX:MaxPermSize=256M</argLine>
                    </configuration>
                </plugin>

                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>default-test</id>                                
                            <configuration>
                                <skipTests>true</skipTests>
                            </configuration>
                        </execution>
                    </executions>

                </plugin>
            </plugins>
        </build>
    </profile>

ここで、integrationTestSingle プロファイルと を使用して maven を呼び出します。-DfailIfNoTests=false -Dtest=NameOfTest通常の「テスト」フェーズでは通常のテストは実行されずNameOfTest、統合テスト フェーズではテストのみが実行されます。

于 2010-11-19T19:40:53.640 に答える
2

JUnitについてはわかりませんが、TestNGの場合、戦略は1つのテストのみでスイートXMLファイルを定義し、POMでそれのみを実行するように確実なプラグインを構成することです。POM には、次のようなものがあります (免責事項、これはテストされていません)。

  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <executions>
      <execution>
        <phase>integration-test</phase>
        <configuration>
          <suiteXmlFiles>
            <suiteXmlFile>single-test.xml</suiteXmlFile>
          </suiteXmlFiles>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

スイート ファイルを構成するには、http://testng.org/doc/documentation-main.htmlを参照してください。

于 2009-05-24T05:47:41.120 に答える
0

自分でこれに遭遇しました。このようなものは私にとってうまくいきました:

mvn -Pintegration-test -Dtest=<my-test>

トリックは、-Dtest 部分の前に test-group が言及されていることを確認することでした。

于 2013-03-30T00:48:33.957 に答える