2009-05-21 26 views
31

私たちは、Mavenの統合テスト段階のライフサイクルについて数百のテストを定義しています。mavenの統合テストターゲットで個別テストを実行する方法

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

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> 
    ..... 
+0

私はちょうど私のプロジェクトでこれをやったし、それが働きました。あなたはポムから確信しているplugingセクションを投稿できますか? –

+0

org.apache.maven.plugins のmaven-確実な-プラグイン 確実な-それ 統合テスト テスト <設定> 012私は理由の制限の完全なものでは転記することはできませんなし **/API/** ..... – Jalpesh

+0

。しかし、それはその要点です。 – Jalpesh

答えて

2

私はJUnitのわからないんだけど、TestNGのための戦略は、1つのテストのみとスイートのXMLファイルを定義することです、そして、あなたのPOMにそれを実行するようにsurefireプラグインを設定してください。 http://testng.org/doc/documentation-main.html

+0

私はJamesに同意します。 TestNGのは、そのために適しているが、私はそれはTestNGのグループを使用する方が良いと思う。<スイート名=「マイスイート」> <テスト名:その後、あなたのTestNGスイート @Test(= {「slow_test」}グループ) = "スローテスト"> <含める名= "slow_test" /> その後、あなたは常に/特定のグループに –

3

を参照してください、私はこれを通じて苦労し、私が使用する追加のプロファイルを作成し、スイートファイルを設定するには

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

:あなたのPOMでは、この(免責事項、これはテストされていない)のようなものを持っているでしょう私は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プロファイルとし、-DfailIfNoTests=false -Dtest=NameOfTestでMavenを呼び出し、それが定期的に「テスト中に定期的なテストのいずれかを実行していない:私は、私が正常にここにちょうど右の部分を抽出してきたことを願っています統合フェーズの段階でNameOfTestテストを実行します。

26

あなたがMaven failsafe pluginを使用している場合は、

mvn -Dit.test=your.TestCase verify 

を経由して、単一の統合テストを実行することができthe failsafe plugin docs for more infoを参照してください。

mvn -Dit.test=BrokenIT verify 

しかし、-Dit.testはもはや機能していないように見える:

+1

を除外する。これは、と2013年7月26日に私のために働いた含めることができますプラグインのバージョン2.15とMaven 3.1.0には、他の答えにもかかわらず。もう一つの答えはバグだったようです。 – ArtB

+1

mvn 3.2.5、プラグイン2.18で検証済み。 実行1統合テスト: MVN統合テスト-Dit.test = MyClassIT しかし、これはまた、ユニットテストを実行します: はMVN -Dit.test = MyClassIT – user77115

+0

が、これはまだユニットテストを実行する可能性があることに注意してください確認してください。ユニットテストの実行をオフにするには、 '-Dtest = foo -DfailIfNoTests = false'を追加します(fooが存在しないと仮定します)。https://stackoverflow.com/questions/6612344/prevent-unit-tests-in-maven- but-allow-integration-testsである。 – asmaier

21

Failsafe documentationはそうのようなテストを指定する必要があります。むしろ、Surefireテストを指定するのに使用されたのと同じパラメータが、Failsafeでも同様に機能します。例:文書を修正するために:

mvn -Dtest=WorksIT verify 

私はbug( 2.12で「再現できない」として閉鎖されたEDIT)を提出しました。

+2

これは答えとして受け入れられるべきです。 – whaley

+0

テスト環境を初期化するbuild-helper-maven-pluginを起動できません。 – okwap

+0

@okwapこれは、あなたのプロジェクトやプラグインの設定に特有のもので、フェイルセーフ/統合テストの問題ではないようです。 – Lyle

0

これにはちょうど遭遇しました。このような何かが私のためによく働い:

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

トリックは、テスト・グループが-Dtest部分の前に言及されたことを確実にするためでした。

2

私はtestNGで-DfailIfNoTests=falseを追加してください。このような何か:

mvn integration-test -Dtest=aITest -DfailIfNoTests=false 
関連する問題