JUnit カテゴリと Maven を使用すると、非常に簡単に分割できます。
これは、単体テストと統合テストを分割することによって、以下に非常に簡単に示されています。
マーカー インターフェイスを定義する
カテゴリを使用してテストをグループ化する最初のステップは、マーカー インターフェイスを作成することです。
このインターフェイスは、統合テストとして実行するすべてのテストをマークするために使用されます。
public interface IntegrationTest {}
テスト クラスをマークする
テスト クラスの先頭にカテゴリ アノテーションを追加します。新しいインターフェースの名前を取ります。
import org.junit.experimental.categories.Category;
@Category(IntegrationTest.class)
public class ExampleIntegrationTest{
@Test
public void longRunningServiceTest() throws Exception {
}
}
Maven 単体テストの構成
このソリューションの優れた点は、単体テストの面では何も変わらないことです。
統合テストを無視するように、maven Surefire プラグインに構成を追加するだけです。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
<excludedGroups>
com.test.annotation.type.IntegrationTest
</excludedGroups>
</configuration>
</plugin>
を実行するmvn clean test
と、マークのない単体テストのみが実行されます。
Maven 統合テストの構成
この設定も非常に簡単です。
標準のフェイルセーフ プラグインを使用し、統合テストのみを実行するように構成します。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<includes>
<include>**/*.class</include>
</includes>
<groups>
com.test.annotation.type.IntegrationTest
</groups>
</configuration>
</plugin>
構成は、標準の実行目標を使用して、ビルドの統合テスト フェーズ中にフェイルセーフ プラグインを実行します。
を実行できるようになりましたmvn clean install
。
今回は、実行中の単体テストと同様に、統合テスト フェーズで統合テストが実行されます。