UT =単体テスト IT =統合テスト。Maven個別のユニットテストと統合テスト
mvn clean install
>はUTではなくIT
mvn clean install
-DskipTestsを実行します= =真=>何のテストが実行されません:すべての私の統合テストクラスが私の目標です@category(IntegrationTest.class)
でアノテートされています
mvn clean deploy
=> UTを実行していないITは
mvn clean test
=>は、UTが実行されていないIT
mvn clean verify
=> UTを実行し、ITは
mvn clean integration-test
=> ITを実行し、UTは
mvn clean install deploy
は=> UTを実行していないIT
POM特性
実行されない:<junit.version>4.12</junit.version>
<surefire-plugin.version>2.18.1</surefire-plugin.version>
<failsafe-plugin.version>2.18.1</failsafe-plugin.version>
コンパイラ:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin>
ユニットテスト:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${surefire-plugin.version}</version> <configuration> <excludedGroups>com.xpto.IntegrationTest</excludedGroups> </configuration> </plugin>
統合テスト:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> <version>${failsafe-plugin.version}</version> <configuration> <groups>com.xpto.IntegrationTest</groups> </configuration> <executions> <execution> <goals> <goal>integration-test</goal> </goals> <configuration> <includes> <include>**/*.class</include> </includes> </configuration> </execution> </executions> </plugin>
は私の結果は以下のとおりです。
mvn clean install
=> OK
mvn clean install
-DskipTests =真=> OK
mvn clean deploy
=> UTが実行されていないIT
mvn clean test
=> OK
mvn clean verify
=> NOK ...唯一のUTが実行されますが、それはまた、実行する必要があります
mvn clean integration-test
=> NOK ... UTが実行され、それが実行されていないではないはずですが、実行する必要があります
mvn clean install deploy
=> OK
サンプルテストを追加できますか?おそらくUTとIT。彼らがどのように名前を付けられ/編成され/注釈付けされているかが問題の一部であるかどうかは疑問だ。 –
あなたの要件の少なくとも一部はおそらく実行できません... "mvn clean integration-test"はITと* UTではなく、Mavenのライフサイクルが連鎖でなければなりません...あなたが 'mvn integration-コンパイル、コンパイルテスト、テスト、パッケージなど、すべての方法で統合テストを実行します。とにかくあなたのUTは超高速でなければならないので、なぜあなたはそれらをスキップしたいですか? – dcsohl
最初に私はユニットテスト '* Test.java'と統合テスト' * IT.java'(maven-surefire-plugin/maven-failsafe-pluginのドキュメントを参照)の命名に正しい命名規則を使用することを提案します。さらに、 'mvn clean install deploy'のようなことをすれば、これは意味をなさないでしょうし、ビルドライフサイクルを理解できませんでした。 'mvn deploy'を実行した場合、インストールはライフサイクルの一部であり、結果的に' mvn deploy'を使用するだけです。 'mvn clean deploy'という呼び出しがUTを実行するが、ITの設定が間違っている場合は間違っている。 – khmarbaise