`

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/

分享到:
评论

相关推荐

    个人毕设-基于Maven+ssm+Mysql的日记管理项目源码.zip

    个人毕设-基于Maven+ssm+Mysql的日记管理项目源码.zip个人毕设-基于Maven+ssm+Mysql的日记管理项目源码.zip个人毕设-基于Maven+ssm+Mysql的日记管理项目源码.zip个人毕设-基于Maven+ssm+Mysql的日记管理项目源码.zip...

    maven学习笔记1

    Maven插件用于扩展Maven的功能,如编译、测试、打包、部署等。通过在pom.xml文件中定义插件和其配置,可以实现自定义的构建过程。例如,`deploy-plugin`用于将构建产物部署到远程仓库。 **六、Maven插件操作** - **...

    spring boot + maven + mybatis + layui

    Maven的插件体系强大,支持各种构建任务,如编译、测试、打包、部署等。 **MyBatis** MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及...

    基于Maven+ssm+Mysql的日记管理项目.zip

    该项目是一个使用Maven构建,基于SSM(Spring、SpringMVC、Mybatis)框架和MySQL数据库的日记管理系统。下面将详细介绍这个项目的各个组成部分及其在实际开发中的应用。 **1. Maven** Maven是一个项目管理和综合...

    Java 程序 日记本

    15. **单元测试**:JUnit的使用,编写测试用例,断言的使用,以及Mockito等工具进行模拟对象测试。 16. **异常日志记录**:使用log4j或slf4j进行日志记录,配置日志级别,以及日志文件的管理和归档。 这些只是...

    java编写私密日记本

    同时,Maven或Gradle等构建工具可以帮助管理依赖,自动化构建和测试过程。 9. **测试**:为了确保程序的正确性,开发者通常会编写单元测试和集成测试,使用JUnit或TestNG等测试框架。 综上所述,"java编写私密日记...

    My-Travel-Diary:使用Google Maps API的旅行日记

    6. **构建工具**:项目可能使用Maven或Gradle进行依赖管理和构建流程。 7. **版本控制**:由于项目是从Git仓库中获取的,所以很可能包含`.git`目录,这有助于了解项目的历史和版本信息。 8. **配置文件**:如`pom....

    基于Maven+ssm+Mysql的日记管理项目完整源码+数据库+说明.zip

    1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用。 2、适用人群:主要针对计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、数学、电子信息等...

    清爽夏日九宫格日记网(Eclipse版)

    而Servlet Container集成测试框架如Arquillian可以帮助进行服务器环境下的集成测试。 10. **部署与发布**:项目完成后,需要将打包好的WAR文件部署到Web容器中,供用户访问。这涉及到对服务器配置的理解和操作。 ...

    九格宫日记网站源码

    此外,版本控制系统如Git可能用于代码版本管理和协作,而Maven或Gradle则可能用于构建和自动化测试。九格宫日记网站源码的分析和学习,可以帮助开发者深入了解Web应用的全貌,提升其在Java Web开发领域的技能。

    j2EE架构师手册+J2EE OA 项目开发日记

    6. **持续集成与自动化测试**:使用如Maven、Jenkins等工具进行持续集成,以及JUnit、Selenium等进行自动化测试的方法。 这两份资源结合,不仅可以帮助读者掌握J2EE架构设计的理论知识,还能通过实际项目的案例学习...

    小熊日记.rar

    源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 SpringBoot 毕业设计,SpringBoot 课程设计,基于SpringBoot+Vue开发的,含有代码注释,新手也可看懂。ssm整合开发,小程序毕业设计、期末大作业、课程...

    云笔记_jsp.zip

    【云笔记_jsp.zip】是一个包含Java毕业设计项目的压缩包,该项目使用了SpringBoot和Maven框架。这个项目的核心目标是构建一个云笔记应用,它可能提供了在线存储、编辑和管理个人笔记的功能,使得用户可以在任何地方...

    大二下--暑期见习作业(要求+code)-shang学堂

    10. **测试**:了解单元测试(JUnit)和集成测试(如TestNG)的基本概念,这对于确保代码质量是必要的。 在完成这个暑期见习作业时,学生不仅会强化Java编程技能,还会了解Web开发的基本流程,为未来更复杂的项目...

    J2EE OA项目开发日记

    这通常包括使用Maven或Gradle进行依赖管理,编写清晰的编码规范,设置单元测试,以及使用持续集成工具如Jenkins进行自动化构建和部署。 3. **在JBoss中部署EJB**:Enterprise JavaBeans (EJB) 是J2EE的一部分,用于...

    JAVA博客管理系统源码

    - 使用JUnit进行单元测试,可能还会有Mockito等工具做模拟测试,保证代码质量。 8. **版本控制** - Git可能是项目版本控制工具,用于团队协作和代码管理。 通过对这套源码的学习,初学者可以掌握Java Web开发的...

    springboot学习日记(一-六)

    Spring Boot提供了`@SpringBootTest`注解进行集成测试,`@WebMvcTest`或`@DataJpaTest`用于更细粒度的测试。JUnit和Mockito是常用的单元测试工具。 除了上述内容,Spring Boot还有许多其他特性,如健康检查、...

    ASP基于WEB网上日记本毕业设计(源代码+论文).rar

    源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 SpringBoot 毕业设计,SpringBoot 课程设计,基于SpringBoot+Vue开发的,含有代码注释,新手也可看懂。ssm整合开发,小程序毕业设计、期末大作业、课程...

Global site tag (gtag.js) - Google Analytics