您的位置:首页 > 其它

sonar-单元测试

2015-09-10 22:30 357 查看

单元测试

  大学以及实习期间,就是web方向的,也没搞过什么单元测试次,这是工作以来第一次搞这玩意儿。

  我是用junit4来做单元测试的,目前测试的内容全是service层的代码,被测试的方法也是差不多局限于queryInfo和getCount方法,方法名也能说明方法的作用了,对于增删改的方法测试,由于框架问题还没实现。

  说到框架,插一句,针对action层做单元测试有难度,像ssh框架就有支持可以测试action层,但是我们公司用的自己的框架,这些支持做的并不好。

  继续说,每个单元测试文件都能直接右键run as junit test执行测试,当然如果单元测试文件多了,这样显然不好的,所以我用了ant批量编译执行。这个ant.xml文件就长这样,具体的写法我也是按照网上的照猫画虎了一下,因为当时为了完成任务所以也没仔细研究,其实就算仔细研究了,为了赶进度我也记不下来,所以这又是一次学习的机会了,下次随便就来整理一下这个xml文件。

  当把这个文件配置到sonar上之后,Jenkins就会定时启动这个文件,然后保存在服务器上的单元测试就会被执行,执行完成之后sonar会使用另一个xml文件进行代码分析,包括进行漏洞扫描等等,这个文件以后也是要说的。

1 <?xml version="1.0" encoding="gb2312"?>
2
3 <project basedir="../" default="report" name="wbass" xmlns:jacoco="antlib:org.jacoco.ant">
4
5     <property name="result.dir" value="${basedir}/result" />
6
7     <property name="result.class.dir" value="${result.dir}/classes" />
8
9     <property name="result.test_class.dir" value="${result.dir}/test_classes" />
10
11     <property name="result.data.dir" value="${result.dir}/data" />
12
13     <property name="result.jacoco.dir" value="${result.dir}/jacoco" />
14
15     <property name="result.jacoco.report.dir" value="${result.jacoco.dir}/report" />
16
17     <target name="init">
18
19         <mkdir dir="${result.dir}" />
20
21         <delete>
22             <fileset dir="${result.dir}" includes="**/*" />
23         </delete>
24
25         <mkdir dir="${result.data.dir}" />
26
27         <mkdir dir="${result.class.dir}" />
28
29         <mkdir dir="${result.test_class.dir}" />
30
31         <mkdir dir="${result.jacoco.dir}" />
32
33         <mkdir dir="${result.jacoco.report.dir}" />
34
35
36     </target>
37
38     <target name="compile" depends="init">
39         <echo message="开始编译java" />
40
41         <!-- 需要将src所需的配置文件copy到class中 -->
42         <copy todir="${result.class.dir}">
43             <fileset dir="${basedir}/src">
44                 <include name="**/*.properties"/>
45                 <include name="**/*.vm"/>
46             </fileset>
47         </copy>
48
49         <javac srcdir="${basedir}/src" destdir="${result.class.dir}" encoding="UTF-8" debug="on" debuglevel="lines,vars,source" nowarn="true" failonerror="true" fork="true" memorymaximumsize="1024M" includeantruntime="on">
50             <classpath>
51                 <fileset dir="${basedir}/lib" includes="**/*.jar" />
52             </classpath>
53             <include name="**/*.*" />
54         </javac>
55
56         <javac srcdir="${basedir}/test" destdir="${result.test_class.dir}" encoding="UTF-8" debug="on" debuglevel="lines,vars,source" nowarn="true" failonerror="true" fork="true" memorymaximumsize="1024M" includeantruntime="on">
57             <classpath>
58                 <fileset dir="${basedir}/lib" includes="**/*.jar" />
59                 <pathelement path="${result.class.dir}" />
60             </classpath>
61             <include name="**/*Test.*" />
62         </javac>
63
64         <echo message="编译完成" />
65
66     </target>
67
68     <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
69
70         <classpath path="${basedir}/lib/jacocoant.jar" />
71
72     </taskdef>
73
74     <target name="test" depends="compile">
75
76         <copy todir="${result.class.dir}">
77             <fileset dir="${basedir}/config" includes="**/*" />
78             <fileset dir="${basedir}/src/sql-config" includes="*.*" />
79         </copy>
80
81         <jacoco:coverage destfile="${result.dir}/jacoco.exec">
82             <junit fork="true" forkmode="once" printsummary="on" failureproperty="unit.test.failure" jvm="">
83             <jvmarg value="-XX:MaxPermSize=512M" />
84             <jvmarg value="-Xms512m" />
85             <jvmarg value="-Xmx2048m"/>
86                 <classpath>
87                     <fileset dir="${basedir}/lib" includes="**/*.jar" excludes="ant.jar"/>
88                     <pathelement path="${result.class.dir}" />
89                     <pathelement path="${result.test_class.dir}" />
90                 </classpath>
91
92                 <formatter type="xml" />
93                 <batchtest todir="${result.data.dir}">
94                     <fileset dir="${basedir}/test">
95                         <include name="**/*Test.java" />
96                     </fileset>
97                 </batchtest>
98             </junit>
99         </jacoco:coverage>
100     </target>
101
102     <target name="report" depends="test">
103         <jacoco:report>
104             <executiondata>
105                 <file file="${result.dir}/jacoco.exec" />
106             </executiondata>
107
108             <structure name="jacoco_wbass">
109                 <classfiles>
110                     <fileset dir="${result.class.dir}" />
111                 </classfiles>
112                 <sourcefiles encoding="UTF-8">
113                     <fileset dir="${basedir}/src" />
114                 </sourcefiles>
115             </structure>
116             <html destdir="${result.jacoco.report.dir}" />
117         </jacoco:report>
118     </target>
119
120 </project>

 

转载于:https://www.cnblogs.com/cyhao/p/4799389.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: