sonar-单元测试

单元测试

  大学以及实习期间,就是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>

 

posted @ 2015-09-10 22:30  十万伏特  阅读(1975)  评论(0编辑  收藏  举报