2015-12-23 15 views
5

私のJava(Maven)Webプロジェクトには、Jenkinsの自動GUIテスト用の組み込みTomcat 7サーバーとSeleniumを使用した「通常の」単体テストと統合テストの2種類のテストがあります。 。すべてのテストにはJUnitの@Testという注釈が付けられ、通常テストは "Test.java"で終了し、統合テストは "IntegrationTest.java"で終わります。JUnit 4でEclipse IDEの統合テストを除外する

:すべてのテストクラスは、Tomcatサーバーを起動し、テスト・カテゴリを分割私 pom.xmlの関連部分は、それに応じて次のようになりながら、私は通常、 mvn clean verifyと私のプロジェクトをビルドするのsrc /テスト/ javaの

に位置しています

<!-- For front-end testing --> 
     <plugin> 
      <groupId>org.apache.tomcat.maven</groupId> 
      <artifactId>tomcat7-maven-plugin</artifactId> 
      <version>2.2</version> 
      <configuration> 
       <uriEncoding>UTF-8</uriEncoding> 
       <additionalConfigFilesDir>${basedir}/conf</additionalConfigFilesDir> 
       <contextFile>${basedir}/src/test/resources/context.xml</contextFile> 
      </configuration> 
      <executions> 
       <execution> 
        <id>start-tomcat</id> 
        <phase>pre-integration-test</phase> 
        <goals> 
         <goal>run-war-only</goal> 
        </goals> 
        <configuration> 
         <fork>true</fork> 
         <port>9090</port> 
        </configuration> 

       </execution> 
       <execution> 
        <id>stop-tomcat</id> 
        <phase>post-integration-test</phase> 
        <goals> 
         <goal>shutdown</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <version>2.16</version> 
      <configuration> 
       <excludes> 
        <exclude>**/*IntegrationTest*</exclude> 
       </excludes> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-failsafe-plugin</artifactId> 
      <version>2.16</version> 
      <configuration> 
       <includes> 
        <include>**/*IntegrationTest*</include> 
       </includes> 
      </configuration> 
      <executions> 
       <execution> 
        <goals> 
         <goal>integration-test</goal> 
         <goal>verify</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

このプロシージャは正常に動作しますが、通常は自分のプロジェクトを右クリックするとEclipseを使用してテストを実行します.JAnitテストとして実行します。このオプションを選択すると、すべてのテスト(統合テストを含む)が実行されます。この場合、Tomcatは実行されていないため、統合テストは失敗します(これはMavenのpre-integration-testフェーズでのみ開始されます)。

JUnitプラグインを使用してEclipseでこれらのテストを除外するにはどうすればよいですか?

+0

AFAIKできません。 –

答えて

2

私はjunit-toolboxを使用しています。ワイルドカードパターンを使用して単位テストと統合テストを分離する注釈を提供します。

​​

AllIntegrationTests.java

package base; 

import org.junit.runner.RunWith; 

import com.googlecode.junittoolbox.ParallelSuite; 
import com.googlecode.junittoolbox.SuiteClasses; 

/** 
* This detects all (fast running) unit test classes by the given naming pattern. 
* 
*/ 
@RunWith(ParallelSuite.class) 
@SuiteClasses({ "**/*Test.class", "!**/*IntegrationTest.class", "!**/*LearningTest.class" }) 
public class AllUnitTests { 

} 

package base; 

import org.junit.runner.RunWith; 

import com.googlecode.junittoolbox.SuiteClasses; 
import com.googlecode.junittoolbox.WildcardPatternSuite; 

/** 
* This detects all integration test classes by the given naming pattern. 
* 
*/ 
@RunWith(WildcardPatternSuite.class) 
@SuiteClasses({ "**/*IntegrationTest.class", "**/*IT.class" }) 
public class AllIntegrationTests { 

} 

あなたは、Eclipseを経由して、両方の一般的なテストスイートを実行することができます

AllUnitTests.javaから/src/test/java/baseは、2つのクラスが含まれています。

Maven経由でテストを実行できるように、私はあなたが示した方法と似たアプローチを使用します。

関連する問題