首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven独立的单元测试和集成测试

Maven独立的单元测试和集成测试
EN

Stack Overflow用户
提问于 2015-10-24 01:17:00
回答 1查看 17.6K关注 0票数 34

UT =单元测试IT =集成测试。我的所有集成测试类都用@Category(IntegrationTest.class)进行了注释

我的目标是:

mvn clean install =>运行UT而不是IT

mvn clean install -DskipTests=true =>不执行任何测试

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属性:

代码语言:javascript
复制
<junit.version>4.12</junit.version>
<surefire-plugin.version>2.18.1</surefire-plugin.version>
<failsafe-plugin.version>2.18.1</failsafe-plugin.version>

  1. 编译器:

org.apache.maven.plugins maven-compiler-plugin 2.5.1 1.8 1.8 -Xlint:all true true

  • 单元测试:

org.apache.maven.plugins maven-surefire-plugin ${surefire-plugin.version} com.xpto.IntegrationTest

  • 集成测试:

org.apache.maven.plugins maven-failsafe-plugin ${failsafe-plugin.version} com.xpto.IntegrationTest集成测试**/*.class

我的结果是:

mvn clean install =>正常

mvn clean install -DskipTests=true =>正常

mvn clean deploy =>运行UT而不是IT

mvn clean test =>正常

mvn clean verify => NOK...只执行UT,但也需要执行IT

mvn clean integration-test => NOK...UT已执行但不应执行,IT未执行但应执行

mvn clean install deploy =>正常

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-24 03:53:19

解决方案是:

代码语言:javascript
复制
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.19.1</version>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-failsafe-plugin</artifactId>
          <version>2.19.1</version>
        </plugin>
      </plugins>
    </pluginManagement>
   <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.6.1</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <skip>${surefire.skip}</skip>
        </configuration>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

这将让您控制执行的是哪一个。

运行UT和IT:

代码语言:javascript
复制
mvn clean verify

运行IT而不是UT

代码语言:javascript
复制
mvn clean verify -Dsurefire.skip=true 

运行UT,但不运行IT:

代码语言:javascript
复制
mvn clean verify -DskipITs=true 

您需要遵循插件的命名约定,这将使您的工作更轻松。

maven-surefire- Naming conventions插件(单元测试)。maven-failsafe- Naming conventions插件(集成测试)。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33308037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档