`

maven日记(七):使用maven进行测试

阅读更多

maven本身不是一个单元测试框架,java中主流的单元测试框架为JUnit和TestNG,maven所做的只是在构建执行到特定生命周期阶段的时候,通过插件来执行junit或者TestNG的测试用例,这一插件就是大名鼎鼎的maven-surefire-plugin。

默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径下所有符合下列命名规约的测试类:

# **/Test*.java:任何子目录下以Test开头的Java类

# **/*Test.java:任何子目录下以Test结尾的Java类

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

想全部测试,在pom.xml目录下运行 mvn test 即可

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

# mvn test -Dtest=com.springzoo.RandomGeneratorTest // 指定测试类

# mvn test -Dtest=com.springzoo.Random*Test // 通配符指定测试类

# mvn test -Dtest=com.springzoo.* // 通配符指定测试包里面的所有测试类

# mvn test -Dtest=com.springzoo.**.* // 通配符指定测试包下所有子包的所有测试类

# mvn test -Dtest=com.springzoo.**.*Random*Test // 最灵活的通配符了

>> 测试报告:

默认情况下,maven-surefire-plugin会在项目的target/surefire-reports目录下生成两种格式的测试报告:简单文本和xml格式

测试覆盖率是衡量项目代码质量的一个重要的参考指标。Cobertura是一个优秀的开源测试覆盖率统计统计(详见http://cobertura.sourceforge.net/)。maven通过cobertura-maven-plugin与之集成,用户可以使用简单命令就可以为maven项目生成测试覆盖率报告:

# mvn cobertura:cobertura

接着,打开项目目录下的target/site/cobertura/下的index.html文件,就可以查看测试覆盖率报告了,单击具体的类还可以看到精确到行的覆盖率报告。

>> 运行TestNG:

NG是Next Generation的缩写,即下一代java测试技术,在JUnit基础上增加了许多特性。先加入TestNG依赖:

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

然后再测试中将JUnit的注解换成TestNG注解即可,除了JUnit的Before对应于TestNG的BeforeMethod,After对应AfterMethod注解以外,其他都一样。

TestNG一个很大的优势是支持测试组的概念,如下注解会将方法加入到util和medium组中:

@Test(groups={"util", "medium"})

然后再在maven-surefire-plugin的配置中配置要运行的测试组:

<plugin>
    <grougId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactid>
    <version>2.5</version>
    <configuration>
        <groups>utils,medium</groups>
    </configuration>
</plugin>

>> 重用测试代码:

如果在项目内部想要重用某个模块的测试代码的话,可以利用maven-jar-plugin插件将测试类也打包:

<plugin>
    <grougId>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有两个target:jar和test-jar,前者通过内置绑定在default生命周期的package阶段运行。test-jar默认绑定生命周期阶段也为package,因此当运行mvn clean package的时候,会同时生成xxx-SNAPSHOT.jar和xxx-SNAPSHOT-tests.jar。部署到nexus上去后,下面就可以用了:

<dependency>
        <groupId>com.springzoo</groupId>
        <artifactId>account-captcha</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <type>test-jar</type>
        <scope>test</scope>
</dependency>

请注意上面的type和scope

 

本人博客已搬家,新地址为:http://yidao620c.github.io/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics