我的Java(Maven)Web项目中有两种测试:" normal"使用嵌入式Tomcat 7服务器和Selenium进行单元测试和集成测试,以便在Jenkins上进行自动GUI测试。所有测试都使用JUnit' @Test
注释,正常测试以#34; Test.java"结束。集成测试以" IntegrationTest.java"结束。所有测试类都位于src / test / java
我通常使用mvn clean verify
构建我的项目,而启动tomcat服务器并相应地拆分测试类别的pom.xml
的相关部分如下所示:
<!-- 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中运行我的测试,我通常右键单击我的项目 - &gt;以 - &gt;运行JUnit测试。通过选择此选项,可以运行所有测试(包括集成测试)。在这种情况下,集成测试失败,因为Tomcat没有运行(它只在Maven&#39; pre-integration-test
阶段启动)。
如何使用JUnit插件在Eclipse中排除这些测试?
答案 0 :(得分:3)
我使用 junit-toolbox 。它通过通配符模式为单独的单元测试和集成测试提供注释。
<dependency>
<groupId>com.googlecode.junit-toolbox</groupId>
<artifactId>junit-toolbox</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
以下的基础包/src/test/java/base
包含两个类 -
<强> AllUnitTests.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 {
}
和 的 AllIntegrationTests.java 强>:
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运行两个通用测试套件。
为了能够通过Maven运行测试,我使用的方法类似于您所示的方法。