文章出自:http://www.360doc.com/content/13/0927/15/7304817_317455642.shtml
1.maven-surefire-plugin简介
Maven本身并不是一个单元测试框架,它只是在构建执行到特定生命周期阶段的时候,通过插件来执行JUnit或者TestNG的测试用例。这个插件就是maven-surefire-plugin,也可以称为测试运行器(Test Runner),它能兼容JUnit 3、JUnit 4以及TestNG。
在默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径(默认为src/test/java/)下所有符合一组命名模式的测试类。这组模式为:
- **/Test*.java:任何子目录下所有命名以Test开关的Java类。
- **/*Test.java:任何子目录下所有命名以Test结尾的Java类。
- **/*TestCase.java:任何子目录下所有命名以TestCase结尾的Java类。
2.跳过测试
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中配置maven.test.skip:
<plugin> <groupId>org.apache.maven.plugin</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.1</version> <configuration> <skip>true</skip> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <skip>true</skip> </configuration> </plugin>
3.动态指定要运行的测试用例
maven-surefire-plugin提供了一个test参数让Maven用户能够在命令行指定要运行的测试用例。如:
mvn test -Dtest=RandomGeneratorTest
也可以使用通配符:
mvn test -Dtest=Random*Test
或者也可以使用“,”号指定多个测试类:
mvn test -Dtest=Random*Test,AccountCaptchaServiceTest
如果没有指定测试类,那么会报错并导致构建失败。
mvn test -Dtest
这时候可以添加-DfailIfNoTests=false参数告诉maven-surefire-plugin即使没有任何测试也不要报错。
mvn test -Dtest -DfailIfNoTests=false
由此可见,命令行参数-Dtest -DfailIfNoTests=false是另外一种路过测试的方法
4.包含与排除测试用例
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <includes> <include>**/*Tests.java</include> </includes> <excludes> <exclude>**/*ServiceTest.java</exclude> <exclude>**/TempDaoTest.java</exclude> </excludes> </configuration> </plugin>
5.生成测试报告
5.1基本测试报告
- 简单文本格式——内容十分简单,可以看出哪个测试项出错。
- 与JUnit兼容的XML格式——XML格式已经成为了Java单元测试报告的事实标准,这个文件可以用其他的工具如IDE来查看。
5.2测试覆盖率报告
mvn cobertura:cobertura
6.运行TestNG测试
<dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>5.9</version> <scope>test</scope> <classifier>jdk15</classifier> </dependency>
JUnit类 | TestNG类 | 作用 |
org.junit.Test | org.testng.annotations.Test | 标注方法为测试方法 |
org.junit.Assert | org.testng.Assert | 检查测试结果 |
org.junit.Before | org.testng.annotations.BeforeMethod | 标注方法在每个测试方法之前运行 |
org.junit.After | org.testng.annotations.AfterMethod | 标注方法在每个测试方法之后运行 |
org.junit.BeforeClass | org.testng.annotations.BeforeClass | 标注方法在所有测试方法之前运行 |
org.junit.AfterClass | org.testng.annotations.AfterClass | 标注方法在所有测试方法之后运行 |
TestNG允许用户使用一个名为testng.xml的文件来配置想要运行的测试集合。如在类路径上添加testng.xml文件,配置只运行RandomGeneratorTest
<?xml version="1.0" encoding="UTF-8"?> <suite name="Suite1" verbose="1"> <test name="Regression1"> <classes> <class name="com.juvenxu.mvnbook.account.captcha.RandomGeneratorTest" /> </classes> </test> </suite>
同时再配置maven-surefire-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的一大优势在于它支持测试组的概念。如可以在方法级别声明测试组:
@Test(groups={"util","medium"})
然后可以在pom中配置运行一个或多个测试组:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.5</version> <configuration> <groups>util,medium</groups> </configuration> </plugin>
7.重用测试代码
<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>
现在如要引用test-jar生成的测试代码包,可以如下配置:
<dependency> <groupId>com.juvenxu.mvnbook.account</groupId> <artifactId>account-captcha</artifactId> <version>1.0.0-SNAPSHOT</version> <type>test-jar</type> <scope>test</scope> </dependency>
相关推荐
maven项目,单元测试jacoco、junit...........................................................................................
【标题】:“jacoco单元测试覆盖率+maven DEMO”是一个示例项目,旨在演示如何使用JaCoCo工具和Maven构建工具来计算Java项目的单元测试覆盖率。JaCoCo是一款流行的开源代码覆盖率工具,它能够帮助开发者了解代码在...
【标题】"dubbo单元测试maven项目"指的是在基于Maven构建的Java项目中,对采用Dubbo框架实现的服务进行单元测试的过程。Dubbo是一个高性能、轻量级的开源Java RPC框架,它提供了服务治理功能,包括服务注册、服务...
其中,“测试”阶段主要对应于单元测试,Maven会自动查找项目中的src/test/java目录下的所有以Test结尾的类并运行其包含的测试方法。如果使用了JUnit,测试类的命名通常遵循@Test注解的约定。 除了单元测试,Maven...
maven打包跳过test命令 命令行方式跳过测试 我们可以用两种命令来跳过测试 ...使用maven.test.skip,不但跳过单元测试的运行,也跳过测试代码的编译; 使用 mvn package -DskipTests 跳过单元测试,但是会继续编译。
JaCoCo是一款流行的开源Java代码覆盖率工具,它能轻松地集成到构建工具如Maven中,帮助开发者准确地了解单元测试的覆盖率情况。 **JaCoCo简介** JaCoCo提供了全面的代码覆盖率报告,包括行覆盖率、分支覆盖率、...
该规范涵盖了JAVA单元测试的指引,覆盖了测试的需求、测试颗粒化、测试自动化、持续维护等方面,并提供了Maven和Junit的使用指南,旨在帮助研发人员编写高质量的单元测试代码。 在软件开发中,测试是非常重要的一步...
Maven使用`s surefire-plugin`插件来执行Java应用程序的单元测试,这个插件提供了丰富的配置选项来控制测试的执行方式。 ### 跳过测试类的打包配置 假设我们的目标是在构建过程中完全跳过所有测试类的执行,可以...
使用Maven运行单元测试 将项目安装到Maven本地资源库 生成基于Maven的项目文档站点 使用“mvn site-deploy”部署站点(WebDAV例子) 部署基于Maven的war文件到Tomcat Eclipse创建一个Maven Web项目 在易百教程网...
例如,你可以创建一个名为`MyServiceTest`的测试类,使用`@Autowired`注解注入服务实例,然后使用Mockito模拟其他依赖,进行单元测试。 总之,正确配置Spring Boot测试类的Maven依赖,可以帮助开发者编写高效、全面...
Maven 2 内置了支持JUnit和其他测试框架的机制,可以自动运行单元测试,并生成测试报告。`mvn test`命令即可执行测试,`mvn install`则会在测试成功后将项目打包并安装到本地仓库。 **7. 部署与发布** `mvn deploy`...
【标题】"mavenWeb空项目"所涉及的知识点主要集中在Java编程语言和Maven构建工具上,这是一个基于Maven的、已经过单元测试的Web应用程序的基础框架。下面将详细介绍这两个核心领域的相关知识。 **一、Java编程语言*...
在test阶段,Maven使用JUnit等测试框架运行项目中的单元测试;在package阶段,编译后的代码被打包成JAR、WAR或EAR等格式。 此外,Maven的插件系统非常强大,可以通过安装各种插件来扩展其功能,例如生成Javadoc,...
6. **测试用例**:在 `g_net_client_test` 文件中,可能包含了单元测试或集成测试,用于验证客户端功能的正确性。测试可能会模拟不同的网络条件,比如延迟、丢包,确保客户端能够正确处理各种情况。 7. **异常处理*...
使用maven.test.skip,不但跳过单元测试的运行,也跳过测试代码的编译; 使用 mvn package -DskipTests 跳过单元测试,但是会继续编译。 ———————————————— 版权声明:本文为博主原创文章,遵循 CC...
插件是Maven功能的扩展,例如maven-compiler-plugin用于编译源代码,maven-surefire-plugin用于运行单元测试。通过在pom.xml中配置插件,开发者可以自定义构建过程,实现各种复杂的需求。 除了基本功能外,Maven还...
测试环节,可以使用JUnit进行单元测试,验证单个函数或方法的正确性;对于接口和页面,可以利用MockMvc进行模拟请求测试;对于数据库操作,可以编写SQL查询验证数据的正确存储和读取。最后,通过Maven的deploy阶段,...
同时,你也可以编写单元测试或集成测试来确保正确版本的JAR被加载并正常工作。 在进行这样的测试时,要关注Maven的输出日志,它会显示每个依赖的下载状态,这有助于理解下载过程。此外,`settings.xml`文件也会影响...
- 插件(Plugins):执行生命周期中特定任务的组件,如JAR插件负责打包Java项目,Surefire插件负责运行单元测试。 使用Maven,开发者只需在POM.xml中声明项目依赖,Maven会自动下载并管理这些依赖,避免了版本冲突...