使用maven进行测试(九)

 maven本身并不是一个单元测试框架,java世界中主流的测试框架为junit和testng。maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行junit或者testng的测试用例。这一插件就是maven-surefire=plugin,可以称之为测试运行器,它能很好的兼容junit3、junit4和testng。

 maven的default生命周期test阶段内置绑定上述插件的test目标,插件会执行特定目标下的符合命名格式的测试类,命名格式如下:

**/Test*.java:任何子目录下所有命名以Test开头的java类。

**/*Test.java:任何子目录下所有命名以Test结尾的java类。

**/*TestCase.java:任何子目录下所有命名以TestCase结尾的java类。

只有符合这些标准的测试类才会得以执行。

当然,如果有需要,可以自己定义要运行测试类的模式,另外上述插件还支持更高级的testng测试集合xml文件。

跳过测试运行

mvn package -DskipTests

长期跳过测试运行在pom中全局设置插件:

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.5</version>
          <configuration>
            <skipTests>true</skipTests>
          </configuration>

</plugin>

跳过测试编译和运行

mvn package -Dmaven.test.skip=true,这个参数控制了两个插件,跳过了测试的编译和运行。

永久跳过,在pom中全局配置插件:

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.5</version>
          <configuration>
            <sikp>true</sikp>
          </configuration>

</plugin>

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
</plugin>

动态指定要运行的测试用例:

mvn test -Dtest=abcTest   只运行这个abcTest测试类

mvn test -Dtest=abc*Test   星号可以匹配零个或者多个字符,表示运行以abc开头Test结尾的所有测试类。

mvn test -Dtest=abcTest,defTest   只运行这两个测试类。

mvn test -Dtest 如果只执行这个命令,插件找不到测试类的情况下会导致构建失败。

mvn test -Dtest -DfailIfNoTests=false 告诉插件,即使没有任何测试类也不要报错。

遗憾的是,在命令行不能指定某个测试类做排除测试。

包含与排除测试用例:

**是指匹配任何路径,*匹配除路径分隔符外的0个或多个字符。

include元素指定要执行的测试用例,exclude指定要排除的测试用例。

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

</plugin>

测试报告的生成:maven-surefire-plugin生成测试报告

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

1.简单文本格式

2.与junit兼容的xml格式,这个格式的报告可以用于三方工具的解析。

测试覆盖率报告:cobertura-maven-plugin,生成在target/site/cobertura目录下。

在pom.xml目录下运行 mvn cobertura:cobertura

运行TestNG测试

testNG测试的普通用法和junit测试是一样的,另外TestNG支持用户使用一个testng.xml的文件来配置想要运行的测试集合,testng.xml文件放在根目录下,文件内容如:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > 

<suite name="Suite1" verbose="1" > 

<groups>

<run>

<include name="..." />
<exclude name="..." /> 
</run>

</groups> 
<test name="Regression1"> 
 ...
</test>

</suite>
另外,配置插件cobertura-maven-plugin使用该testng.xml文件

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

TestNG较junit的一大优势是支持测试组的概念:

<plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.5</version>
          <configuration>
             <groups>util1,util2</groups>
          </configuration>
</plugin>

测试代码可以重用,我们可以把测试代码打包并部署到仓库供其他项目使用:

<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>

当需要引用测试jar包的时候,坐标的类型用:<type>test-jar</type>








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值