在Eclipse IDE中使用JUnit 4排除集成测试

时间:2015-12-23 15:27:23

标签: eclipse maven junit

我的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中排除这些测试?

1 个答案:

答案 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运行测试,我使用的方法类似于您所示的方法。