maven JUnit
来源:互联网 发布:怎么样申请淘宝子账号 编辑:程序博客网 时间:2024/06/07 00:28
maven倡导约定优于配置,而maven的约定目录结构为:
- src/main/Java 下存放java类
- src/main/webapp 下存放页面文件(需要手动创建)
- src/main/resources 下存放资源文件
- src/test/java 下存放单元测试代码
- src/test/resources 下存放测试资源文件
maven运行的生命周期为:
复制src/main/resources资源文件到输出目录
编译src/main/java下的源代码
复制src/test/resources下的测试用资源文件到测试输出目录
编译src/test/java下的测试用例
运行测试用例
打包生成
默认情况下,maven集成了maven-surefire-plugin插件,该插件会去查找src/test/java下所有包含Test的类作为测试类,测试类会去src/test/resources下查找测试资源。我们只需在测试方法上使用@Test注解,那么测试就顺理成章了;
mvn 在默认情况下,执行maven test/maven package/maven install命令时会在target/surefire-reports目录下生成txt和xml格式的输出信息;
其实maven也可以生成html格式的报告,只需要用一个插件即可:maven-surefire-report-plugin。
这个插件的特点:
1.能把生成的xml报告转换成html
2.能指定哪些测试类需要被执行,哪些测试类不被执行
3.能兼容JUnit 3、JUnit 4以及TestNG
4.在默认情况下,我们无法在在某一个生命周期去调用它,因为并不是所有的用户每次构建软件的时候都会需要html格式。
如果要生成html格式的测试报告,我们需要单独执行命令:mvn surefire-report:report
调用这个命令会执行的步骤:
1.先编译源文件和测试用例
2.再调用surefire插件(这个插件主要是用来执行单元测试的插件)生成txt和xml个数的测试输出信息
3.surefire报告插件(也就是maven-surefire-report-plugin)会把target/surefire-reports下的所有xml报告转换成一份html格式的文件。并将这个html格式的测试报告保存在target/site目录下。
示例:
在项目的根目录下执行:mvn surefire:test
运行结果:
查看生成的xml和txt测试报告(生成的测试报告默认路径:/project_path/target/surefire-report)
txt和xml格式的测试报告不直观,我们用maven-surefire-report插件将它们转成HTML格式:
1. 添加插件的依赖:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId></plugin>
- 在项目的根目录下执行:mvn surefire-report:report
运行结果:
由此图可以验证我们上面所说的该命令的执行步骤,即:
复制src/main/resources资源文件到输出目录
编译src/main/java下的源代码
复制src/test/resources下的测试用资源文件到测试输出目录
编译src/test/java下的测试用例
运行测试用例
查看生成的html测试报告(html格式测试报告默认存储路径:project_path/target/site/xxx.html)
如图:我们还想查看一下代码的覆盖率,那么就使用maven的maven-corertura插件;
maven-corertura插件介绍:
cobertura是一款用来计算java代码测试覆盖率的工具,基于jcoverage。能计算每个类、包、整个工程的行覆盖率和分支覆盖率以及代码复杂度(Cyclomatic complexity)并生成html或xml形式的报告,让用户很方便的查看代码的单元测试覆盖率情况。cobertura的原理是通过对class文件进行插桩然后计算。
在项目目录下运行mvn cobertura:cobertura即可生成target目录下生成site\cobertura目录,里面存放了所有的单元测试报告,组织形式如javadoc.其中index.html对所有包的覆盖率做了统计;cobertura-maven-plugin还提供了mvn cobertura:check命令来在verify阶段查看代码覆盖率是否达到预设要求,给项目管理者提供了一个检查代码覆盖率的工具。
maven-corertura插件使用:
a、首先在pom中添加配置
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.2</version> <configuration> <encoding>UTF-8</encoding> <formats> <format>html</format> <format>xml</format> </formats> <check/> </configuration></plugin>
b、运行goal
在项目根目录下运行mvn cobertura:cobertura 将会插桩class文件、测试、生成覆盖率报告,如图:
运行结果:
由上图,可以验证cobertura命令的执行步骤:
复制资源文件到目标目录;
编译主体代码
编译测试代码
运行测试代码
c、在target\site\cobertura目录下生成报告文件,打开index.html可以查看具体报告,如图:
生成的html格式的代码覆盖率报告:
打开index.html,查看具体情况:
小结:
使用maven的 maven-surefire-plugin插件可以运行单元测试代码,并生成xml和txt格式的测试报告;
使用maven的 maven-surefire-report-plugin插件可以运行单元测试代码,并将生成的xml和txt格式的测试报告聚合成HTML格式的测试报告;
使用maven的 cobertura-maven-plugin插件可以运行单元测试代码,并生成代码覆盖率报告;
我们将这些maven goal配置到jenkins上,依靠 jenkins实现自动化测试的同时还能得到HTML格式的测试报告和代码覆盖率报告,详见后续的jenkins配置;
Notes:
测试包和测试类的规范:
src/main/java目录存放项目的主体代码
src/main/test目录存放项目的测试代码
src/main/test目录下的包命名规则:xxxTest(xxx为src/main/java目录下的包名,即src/main/java目录下的每个包,如xxx,在src/main/test目录下都有一个名称为xxxTest或Testxxx的包相对应)
src/main/test目录下的测试类命名规则:xxxTest(即src/main/java目录下的每个类xxx都有一个名称为xxxTest或Testxxx的测试类相对应)
src/main/test目录下的测试方法命名规则:xxxTest(即src/main/java目录下的每个类xxx的每个方法yyy在对应的xxxTest包的xxxTest测试类中都有一个yyyTest相对应)
备注:
cobertura支持的goal总结
cobertura:check
Check the Last Instrumentation Results.cobertura:clean
Clean up rogue files that cobertura maven plugin is tracking.cobertura:dump-datafile
Cobertura Datafile Dump Mojo.cobertura:instrument
Instrument the compiled classes.cobertura:cobertura
Instruments, Tests, and Generates a Cobertura Report.
- maven JUnit
- Maven项目使用Junit
- IntelliJ Idea + Maven + Junit
- MAVEN:JUnit 配置
- Eclipse+maven+JUnit
- maven中的junit测试
- JUnit Ant/Maven集成
- Maven下junit单元测试
- maven配置JUnit环境
- maven------junit作用
- maven + junit + webdriver 简单demo
- maven + junit + webdriver 简单demo
- hudson 集成maven findbugs junit
- maven项目调试Junit类
- maven 程序包org.junit不存在
- Maven中junit打包问题
- maven 中运行Junit单元测试
- springMvc+maven中整合junit
- Java中Reflect反射小结
- CC2541/CC2640 如何实现一主多从
- 点滴
- Java程序员常犯的10个错误
- jquery-cookie 使用 详解
- maven JUnit
- 中兴NFC手机无法读应用问题
- Java中的参数传递问题
- openstack 安装常见配置和错误处理
- Android网络编程之Socket&Http
- Ubuntu + VTK-5.8.0
- POJ-1860(最短路)
- 常用算法题目总结二(数组篇)
- Linux下编译Matconvnet