zoukankan      html  css  js  c++  java
  • Maven Test

    Failures表示要测试的结果与预期值不一致;Errors表示测试代码或产品代码发生了未预期的错误;Skipped表示那些被标记为忽略的测试方法。在Junit中用户可以使用@Ignore注解标记忽略测试方法。

    Maven本身不是一个单元测试框架。Maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或TestNG的测试用例。Maven-surefire-plugin被称之为测试运行器(Test Runner)。它可以兼容JUnit3,JUnit4以及TestNG。

    在默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(src/test/java)下所有符合一组命名模式的测试类。这组模式为:

      **/Test*.java

      **/*Test.java

      **/*TestCase.java

    只要将测试类按上述模式命名。Maven就能自动运行它们,用户不需要定义测试集合来聚合测试用例。以Tests结尾的测试是不会得以自动执行的。

    maven-compiler-plugin的testCompile和maven-surefire-plugin的test目标都提供了一个参数skip用来跳过测试编译和测试运行。这个参数的命令行表达式为maven.test.skip

    maven-surefire-plugin提供了一个test参数让Maven用户能够在命令行指定要运行的测试用例。

    mvn test -Dtest=**Test  //指定运行**Test类

    在POM中配置test运行的类

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.5</version>
        <configuration>
            <includes>
                <include>**/*Tests.java</include>
            </includes>
        </configuration>
    </plugin>

    在POM中配置不运行那些测试类

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.5</version>
        <configuration>
            <exclusions>
                <exclusion>**/*ServiceTest.java</exclusion>
            </exclusions>
        </configuration>
    </plugin>

    默认情况下,maven-surefire-plugin会在项目的target/surefire-reports目录下生成两种格式的错误报告:

      简单文本格式

      与JUnit兼容的XML格式

    测试覆盖率是衡量项目代码质量的一个重要参考指标。Cobertura是一个开源的测试覆盖率统计工具。用户可以使用更简单的命令为Maven项目生成测试覆盖率报告。

    mvn cobertura:cobertura

    TestNG

    <dependency>
        <groupId>org.testing</groupId>
        <artifactId>testing</artifactId>
        <version>5.9</version>
        <scope>test</scope>
        <classifier>jdk15</classifier>
    </dependency>

    TestNG允许用户使用一个名为testing.xml的文件来配置想要运行的测试集合。

    <?xmlv version="1.0" encoding="UTF-8" ?>
    
    <suite name="Suite1" verbose="1">
        <test name="Regression1">
            <classes>
                <class name="com.***.***.*Test" />
            </classes>
        </test>
    </suite>

    然后在maven-surefire-plugin中使用该testing

    <plugin>
        <groupId>org.apache,maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifacId>
        <version>2.5</version>
        <configuration>
            <suiteXmlFiles>
                <suiteXmlFile>testing.xml</suiteXmlFile>
            </suiteXmlFiles>
        </configuration>
    </plugin>

    TestNG较JUnit的一大优势在于它支持测试组的概念。由于用户可以自由地标注方法所属的测试组,因此这种机制能让用户在方法级别对测试进行归类。JUnit只能实现类级别的测试归类。

    @Test(groups={"util","medium"})  //将注解下的方法加入到两个测试组util和medium中

    <plugin>
        <groupId>org.apache.maven.plugin</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
            <groups>util,medium</groups>
        </configuration>
    </plugin>

    Maven配置打包测试类

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.2</version>
        <executions>
            <execution>
                <goals>
                    <goal>test-jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

    maven-jar-plugin有两个目标,分别是jar和test-jar。前横通过maven的内置绑定在default生命周期的package阶段运行,其行为就是对项目主代码进行打包,后者并没有内置绑定。因此需要显式声明该目标来打包测试代码。

  • 相关阅读:
    [ARC117F]Gateau
    [ARC117D]Miracle Tree
    [loj3504]支配
    [gym102511K]Traffic Blights
    [loj3501]图函数
    [loj3503]滚榜
    [loj3500]矩阵游戏
    [loj2135]幻想乡战略游戏
    [cf720D]Slalom
    [cf1349E]Slime and Hats
  • 原文地址:https://www.cnblogs.com/forerver-elf/p/6251912.html
Copyright © 2011-2022 走看看