Surefire 自动化运行单元测试
功能
1、能够指定通配符过滤需要测试的类和排除的类,非常友好的结合Junit;
2、能够生成测试报告,包含测试覆盖率、分支覆盖率(if else)
单元测试覆盖率是什么意思?
比如说,你总共写了100行代码,然后你写了3个单元测试方法,结果这3个单元测试的方法会执行你的100行代码中的80行,另外有20行代码是无论运行哪个单元测试都不会执行的。此时单元测试覆盖率就是80 / 100,80%
一般单元测试覆盖率,要求的是,两种,方法覆盖率,行覆盖率。比如你一共写了10个方法,100行代码
方法覆盖率要达到90%,那么要求就是至少对10个方法中的9个方法都要运行
代码覆盖率要求70%,那么要求就是至少对70行代码都要执行到
分支覆盖率,如果你的代码中有if else,或者是try catch,相当于是你的一段代码根据不同的情况,可能会有2个分支,分支里面还可以再嵌套if else,再分出来2个分支
1 2 3 4 5 |
if if else else if else |
2 * 2 = 4
你的单元测试可以覆盖几个分支,1/4,25%;2 / 4,50%分支覆盖率
surefire插件默认就会在target/surefire-reports目录下生成错误报告,就是如果有单元测试运行失败的话,就会有。
同时可以引入cobertura插件,可以看到测试覆盖率的报告
配置
1 2 3 4 5 6 |
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.5.1</version> </plugin> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<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>**/*TempTest.java</exclude> </excludes> </configuration> </plugin> |
Cargo 自动化部署
功能及说明
cargo插件,就是专门用来进行将本地的web工程打包成一个war包,然后扔到远程的服务器上的Tomcat中去,然后就是给你自动化的部署
在搞定了整个系统的单元测试,web测试之后,就需要将整个系统完成构建,打出一个完整的war包,然后部署到web容器里去了,此时就要用cargo插件来进行自动化的web部署
配置
1、修改 pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<plugin> <groupId>org.codehaus.cargo</groupId> <artifactId>cargo-maven2-plugin</artifactId> <version>1.0</version> <configuration> <container> <containerId>tomcat6x</containerId> <type>remote</type> </container> <configuration> <type>runtime</type> <properties> <cargo.remote.username>admin</cargo.remote.username> <cargo.remote.password>admin</cargo.remote.password> <cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url> <cargo.servlet.port>8080</cargo.servlet.port> </properties> </configuration> </configuration> </plugin> |
2、settings.xml中加入 pluginGroup:org.codehaus.cargo
3、执行 mvn cargo:deploy
部署
Tips
(1)先在本地安装一个tomcat 6
(2)给tomcat 6设置一个管理员,在conf/tomcat-users.xml,
(3)修改tomcat的conf/server.xml,里面在8080那个地方,加入两个配置,URIEncoding=”UTF-8″ useBodyEncodingForURI=”true”
(4)启动tomcat
(5)在项目的pom.xml里加入cargo插件的配置,直接从我给的代码里面去拷贝
(6)在settings.xml里加入pluginGroup,org.codehaus.cargo
(7)解决中文编码的问题,先在web.xml里加入一个字符集编码的过滤器,直接从代码里面拷贝
(8)运行mvn clean package命令,打包,必须先有一个war包
(9)到这一步为止,就可以部署了,直接cargo:deploy,第一次部署,在http://localhost:8080/oa-web/,跟上接口,就可以去访问了
(10)以后重复部署,cargo:redeploy,自动会先卸载,然后再重新部署
注意事项1:在执行cargo命令的时候,切记,不要打开tomcat的任何配置问加你,因为也许会因为文件打开占用,导致一些不必要的bug
注意事项2:如果在实验过程中,遇到一些奇怪的问题,可以考虑在tomcat的webapps下面,删除oa-web目录和oa-web.war,接着重新先关闭tomcat,再启动tomcat,然后再次把你的工程package打包,然后cargo:deploy部署
原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]
本文链接地址: http://www.loserzhao.com/bigdata/maintenance/maven-plugins.html
文章的脚注信息由WordPress的wp-posturl插件自动生成
0 条评论。