zoukankan      html  css  js  c++  java
  • Maven专题4——Maven测试

    Java世界的主流测试框架是JUnit和TestNG,Maven在构建执行到特定生命周期阶段的时候,通过插件执行JUnit和TestNG的测试用例。

    Maven执行测试的插件是maven-surefire-plugin,即测试运行器(Test Runner)。

    1. maven-surefire-plugin

    1.1 扫描规则

    maven-surefire-plugin默认的在测试源码目录(src/test/java)扫描测试类的规则是:

    1. 任何以Test开头的类
    2. 任何以Test结尾的类
    3. 任何以TestCase结尾的类

    1.2 包含和排除测试

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>x.x.x</version>
        <configuration>
            <includes>
                <include>**/*Tests</include> <!-- 包括所有以Tests为后缀的类 -->
            </includes>
            <excludes>
                <exclude>**/*TempDaoTests</exclude> <!-- 排除所有以TempDaoTests为后缀的类 -->
            </excludes>
        </configuration>
    <plugin>
    

    1.3 动态指定测试目标

    # 动态指定执行YourTargetTests类的测试
    mvn test -Dtest=YourTargetTests
    
    # 动态指定执行以Your开头,以Tests结尾的所有测试类
    mvn test -Dtest=Your*Tests
    
    # 使用逗号分隔多个待执行的测试类
    mvn test -Dtest=YourTargetTests,My*Test
    

    1.4 跳过测试

    1.4.1 Maven命令参数

    1. -DskipTests只跳过测试执行,不跳过测试编译;
    2. -Dmaven.test.skip=true同时跳过测试的运行和测试编译。
    3. -Dtest -DfailIfNoTests=false,不指定测试类,同时抑制没有测试类时的报错,相当于一种跳过测试的方法。

    1.4.2 插件配置

    • 跳过测试执行阶段
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>x.x.x</version>
        <configuration>
            <skipTests>true<skipTests>
        </configuration>
    <plugin>
    
    • 同时跳过测试编译和测试执行
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>x.x.x</version>
        <configuration>
            <skipTests>true<skipTests>
        </configuration>
    <plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>x.x.x</version>
        <configuration>
            <skipTests>true<skipTests>
        </configuration>
    <plugin>
    

    1.5 测试报告

    maven-surefire-plugin插件在项目的target/surefire-reports目录生成:

    • 简单文本报告(TXT)
    • 详细报告(XML)

    1.5.1 简单文本格式

    内容包括:

    • 总测试用例数
    • 失败个数(执行结果与预期不符)
    • 出错个数(执行过程中发生了非预期的异常)
    • 跳过个数
    • 执行测试总耗时

    1.5.2 详细报告

    Eclipse等IDE的JUnit插件,集成了可视化阅读详细报告XML文件的功能。

    2. cobertura-maven-plugin与测试覆盖率报告。

    2.1 常用命令

    mvn cobertura:cobertura
    

    2.2 覆盖率报告

    覆盖率报告生成在项目的target/site/cobertura目录,点击其中的index.html即可查看所有的覆盖率信息。

    3 maven-jar-plugin插件与测试代码重用

    maven-jar-plugin插件有两个目标,分别是jartest-jar.

    • jar内置绑定在default生命周期的package阶段
    • test-jar没有内置绑定,如果开发者需要打包测试代码,需要显式绑定,一旦显式绑定,其默认的绑定生命周期阶段是package
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>x.x.x</version>
        <executions>
            <execution>
                <goals>
                    <goal>test-jar</goal>
                <goals>    
            <execution>
        </executions>
    <plugin>
    

    这样,执行mvn package时就会将测试代码一同构建到目标Jar中,如果被打包的测试代码中提供了一些测试工具类,就可以供上层代码使用了。

  • 相关阅读:
    Flash与JS之间相互调用以及参数传递
    在Javascript中监听flash事件(转)
    DataTables.js插入数据的两种方式
    DataTable在内存中的使用
    oracle分页存储过程
    清空highcharts数据
    JDBC源码分析(加载过程)
    MAVEN实现多环境搭建
    Maven基础
    Ajax如何提交数据到springMVC后台
  • 原文地址:https://www.cnblogs.com/zyon/p/11240523.html
Copyright © 2011-2022 走看看