`

[转]使用maven执行单元测试总结

阅读更多

maven本身没有单元测试框架,但是maven的default生命周期的test阶段绑定了maven-surefire-plugin插件,该插件可以调用Junit3、Junit4、TestNG等Java流行测试框架完成单元测试。

在pom中加入Junit依赖

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

约定优于配置

maven的default生命周期的test阶段与maven-surefire-plugin插件的test插件目标内置绑定。默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(默认:src/test/java)下的所有符合一组命名规则的测试类。该命名规则如下:

1. **/Test*.java 任何子目录下所有命名以Test开头的java类
2. **/*Test.java 任何子目录下所有命名以Test结尾的java类
3. **/*TestCase.java 任何子目录下所有命名以TestCase结尾的java类
  • 1
  • 2
  • 3

跳过测试

pom中配置

  • skipTests配置,跳过测试执行阶段
 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <skipTests>true</skipTests>
    </configuration>
 </plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • skip配置,跳过测试执行阶段
 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <skip>true</skip>
    </configuration>
 </plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

mvn命令行中加入参数

  • skipTests
mvn clean package -DskipTests=true
  • 1
  • maven.test.skip(需要注意的是,maven-compiler-plugin插件的testCompile插件目标和maven-resources-plugin插件的testResources插件目标也有这个参数,如果使用-Dmaven.skip.test=true,则跳过了测试资源文件处理、测试代码编译和执行三个阶段。关于maven的生命周期和插件的详细描述,请参考我的另两篇博客:maven生命周期详解Maven插件详解)
mvn clean package -Dmaven.test.skip=true
  • 1

说明:此处的“maven.test.skip”为maven-surefire-plugin插件的test插件目标的参数的表达式,其对应的插件目标参数为上面pom中配置的skip参数。并不是所有插件目标参数都有表达式,也就是说,一些插件目标参数只能在pom中配置。关于插件目标参数和其表达式的详细信息,可以去maven官网的对应插件章查询,地址为:maven官网插件。maven-surefire-plugin中skip的描述如下所示(请放大查看☺): 
skip&skipTests 
跳过测试命令执行情况请参考我的另一篇博客:maven跳过单元测试的两个参数区别

动态指定要执行的测试用例

使用test参数可以在命令行指定要执行的测试用例的类名。

1. mvn test -Dtest=demomavenTest 指定单个测试执行类
2. mvn test -Dtest=demo*Test 指定所有以demo开头以Test结尾的测试类
3. mvn test -Dtest=demo*Test, heheTest 以逗号隔开多个指定的测试类
  • 1
  • 2
  • 3

注意:当test参数没有值时,默认构建会失败。此时加上failIfNoTests=false,即使没有测试也不报错:

mvn test -Dtest -DfailIfNoTests=false 
  • 1

上述命令不会执行任何测试,构建也能顺利完成。这也是一种跳过所有测试完成构建的方法。

包含与排除测试用例

pom中可以配置includes和excludes参数来包含和排除指定的测试类:

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.5</version>
    <configuration>
        <includes>
          <include>**/*Tests.java</include>
        </includes>
        <excludes>
          <exclude>**/*ServiceTest.java</exclude>
          <exclude>**/ServiceTest*.java</exclude>
        </excludes>
    </configuration>
 </plugin>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

(本文是

分享到:
评论

相关推荐

    Maven跳过测试类打包

    Maven使用`s surefire-plugin`插件来执行Java应用程序的单元测试,这个插件提供了丰富的配置选项来控制测试的执行方式。 ### 跳过测试类的打包配置 假设我们的目标是在构建过程中完全跳过所有测试类的执行,可以...

    maven项目开发的maven3.3.9使用包

    4. **测试**:Maven的surefire插件可以帮助执行单元测试。 5. **部署**:使用Maven的deploy插件,可以将构建好的应用部署到远程服务器。 6. **持续集成**:Maven与Jenkins、Git等工具配合,可以实现自动化构建和...

    jacoco单元测试覆盖率+maven DEMO2

    总结来说,JaCoCo与Maven的结合使得单元测试覆盖率的评估变得简单,而与TestNG的配合则让测试更加高效。这对于持续集成和持续交付流程中的质量保证至关重要。通过合理的配置和使用,开发者可以更好地理解和优化其...

    Spring in Action 使用Maven 构建Spring 工程

    例如,`mvn compile`命令会编译源代码,`mvn test`则会执行单元测试,而`mvn package`会打包应用为可部署的格式,如JAR或WAR。此外,Maven还支持多种插件,如Spring Boot Maven插件,可以简化Spring Boot应用的构建...

    新建maven产生的maven库

    例如,default阶段中的compile目标负责编译源代码,test目标执行单元测试,install目标将项目安装到本地仓库,deploy目标则将最终的工件部署到远程仓库。 **6. Maven插件** Maven通过插件扩展其功能,每个插件都有...

    Maven3.8.1.rar免费

    3. **运行测试**:使用`mvn test`命令,Maven会在`src/test/java`下执行单元测试。 4. **打包项目**:执行`mvn package`,Maven会将编译后的代码打包成JAR或WAR文件。 5. **部署项目**:通过`mvn deploy`命令,可以...

    maven 3.8.5 linux版本下载

    - 执行测试:运行`mvn test`,Maven将执行项目中的单元测试。 - 打包项目:使用`mvn package`,Maven会生成JAR或WAR文件。 - 安装到本地仓库:`mvn install`将项目及其依赖安装到本地仓库,便于其他项目引用。 - ...

    Maven3实战笔记04Maven的生命周期和插件

    当Maven执行到某个阶段时,会自动调用绑定在这个阶段上的插件目标来完成相应的任务。例如,在`compile`阶段,Maven会调用`maven-compiler-plugin`的`compile`目标来编译源代码;在`test`阶段,则会调用`maven-...

    maven.rar apache-maven-3.5.4

    - 插件(Plugins):执行生命周期中特定任务的组件,如JAR插件负责打包Java项目,Surefire插件负责运行单元测试。 使用Maven,开发者只需在POM.xml中声明项目依赖,Maven会自动下载并管理这些依赖,避免了版本冲突...

    maven 3.6.3.zip

    5. **执行构建**:通过`mvn clean compile`命令清理并编译项目,`mvn test`运行单元测试,`mvn package`打包应用。 ** Maven的常用命令 ** - `mvn clean`:清除上一次构建生成的目标文件。 - `mvn compile`:编译...

    Maven仓库apache-maven-3.2.5

    插件是Maven功能的扩展,例如maven-compiler-plugin用于编译源代码,maven-surefire-plugin用于运行单元测试。通过在pom.xml中配置插件,开发者可以自定义构建过程,实现各种复杂的需求。 除了基本功能外,Maven还...

    maven3.6.1和3.6.3安装包

    2. **构建项目**: `mvn compile`用于编译源代码,`mvn test`执行单元测试,`mvn package`打包项目,`mvn install`将打包好的文件安装到本地仓库。 3. **清理项目**: `mvn clean`命令可以清理构建产生的临时和输出...

    maven资源 apache-maven-3.3.9-bin.zip

    每个阶段都可以通过特定的插件来执行,例如,`maven-compiler-plugin`用于编译源代码,`maven-surefire-plugin`负责运行单元测试。Maven通过使用Project Object Model (POM)文件来描述项目信息,包括依赖、构建配置...

    Maven使用总结1

    测试阶段执行单元测试,如果需要跳过测试,可以设置`-Dmaven.test.skip=true`。打包阶段会将处理后的class文件和资源打包成JAR。 Maven的传递性依赖意味着当项目依赖A,而A又依赖B时,引入A会自动引入B。如果需要...

    官方下载maven-3.5.4

    - `mvn test`:运行项目的单元测试。 - `mvn package`:打包项目,如生成 JAR 或 WAR 文件。 - `mvn install`:将打包好的文件安装到本地仓库,供其他项目使用。 - `mvn deploy`:将最终的制品部署到远程仓库。 ** ...

    apache-maven-3.3.9

    例如,maven-compiler-plugin用于编译Java源代码,maven-surefire-plugin负责执行单元测试。 **五、Maven Archetypes** Maven Archetypes 是预定义的项目模板,可以快速生成符合约定的新项目结构。例如,`mvn ...

    安装的maven3.6.1

    - `mvn test`: 运行单元测试。 - `mvn package`: 打包项目,如生成JAR或WAR文件。 - `mvn install`: 将打包好的文件安装到本地仓库,供其他项目引用。 - `mvn deploy`: 将最终制品部署到远程仓库。 ** 总结 ** ...

    maven随堂笔记 技术重点 知识点

    * test:执行单元测试 * package:打包项目 * install:安装项目到本地仓库 Maven 项目的生命周期 Maven 项目的生命周期包括三个阶段:clean 生命周期、default 生命周期、site 生命周期。每个生命周期都可以独立执行...

    01-maven.rar maven安装包

    `maven执行的测试命令.txt`可能包含了运行项目测试的具体命令,例如: ``` mvn test ``` 这条命令会执行项目中的单元测试,并生成测试报告。 ### 总结 Maven作为Java开发的重要工具,简化了项目的构建和管理流程。...

    Maven仓库(3.8.6版本)

    4. **测试**:使用`mvn test`命令执行单元测试。 5. **打包**:使用`mvn package`命令将项目打包成可部署的格式,如JAR或WAR。 6. **部署**:使用`mvn deploy`命令将打包好的文件发布到远程仓库。 ** Maven的生命...

Global site tag (gtag.js) - Google Analytics