欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识

通向架构师的阶梯(第二十 次  来源:昆山软开发 时间:2018-03-21

原文出处: 袁鸣凯

一、媒介

在二十三天中我们先容了利用maven来下载工程的依赖库文件,用ant来举办war包的成立。本日我们在这个基本大将利用junit+dbunit来举办带有单位测试陈诉的框架的架构。

方针:

  1. 每次打包之前自动举办单位测试并生成单位测试陈诉
  2. 生成要布署的打包文件即war包
  3. 单位测试的代码不可以或许被打在正式的要布署的war包内,单位测试仅用于unit test用
  4. 利用模仿数据对dao层举办测试,使得dao要领的测试功效可被预料

二、Junit+Ant生成的单位测试陈诉

通向架构师的路线(第二十  <a href=劳务调派打点系统
五天)SSH 的单元测试与 dbunit 的整合" src="/uploads/allimg/c180321/15215L21402050-11341.jpg" /> 通向架构师的路线(第二十  <a href=劳务调派打点系统 五天)SSH 的单元测试与 dbunit 的整合" src="/uploads/allimg/c180321/15215L2141aP-220J.jpg" /> 上面是一份junit生成的测试陈诉,它可以与ant任务一起运行然后自动生成这么一份html的测试陈诉,要生成这样的一份junit test report我们需要挪用ant任务中的<junitreport>这个task,示例代码如下:
<target name="junitreport">  
    <junit printsummary="on" haltonfailure="false" failureproperty="tests.failed" showoutput="true">  
        <classpath>  
            <pathelement path="${dist.dir}/${webAppQAName}/WEB-INF/classes" />  
            <fileset dir="${lib.dir}">  
                <include name="*.jar" />  
            </fileset>  
            <fileset dir="${ext-lib.dir}">  
                <include name="*.jar" />  
            </fileset>  
        </classpath>  
        <formatter type="xml" />  
        <batchtest todir="${report.dir}">  
            <fileset dir="${dist.dir}/${webAppQAName}/WEB-INF/classes">  
                <include name="org/sky/ssh/ut/Test*.*" />  
            </fileset>  
        </batchtest>  
    </junit>  
    <junitreport todir="${report.dir}">  
        <fileset dir="${report.dir}">  
            <include name="TEST-*.xml" />  
        </fileset>  
        <report format="frames" todir="report" />  
    </junitreport>  
    <fail if="tests.failed">  
        ---------------------------------------------------------  
        One or more tests failed, check the report for detail...  
        ---------------------------------------------------------  
    </fail>  
</target>
在一般的产物级开拓时可能是带有daily building/nightly building的项目组中我们常常需要查抄最新check in的代码是否影响到了原有的工程的编译,因为天天都有措施员往源码处事器里check in代码,而有时我们常常会遇到方才被check in的代码在该措施员当地跑的好好的,可是check in源码处事器上后别人从源码处事器“拉”下来的最新代码跑不起来,甚至编译堕落,这就是regression bug,因此我们天天的打包要干的工作应该是:
  1. 措施员check in代码时必需把相关的unit test也check in源码处事器
  2. 越日的零晨由一连集成构件如:cruisecontrol自动按照设好的schedule把所有的源码处事器的代码举办编译
  3. 运行单位测试
  4. 生成陈诉
  5. 打包布署到QA处事器上去
假如讲求点的还会生成一份“单位测试包围率”陈诉。 那么有了这样的单位测试陈诉,项目组组长天天早上一上班查抄一下单位测试陈诉就知道昨天代码check in的环境,有几多是乐成几多是失败,它们别离是哪些类,哪些要领,以找到相关的认真人。 同时,有了单位测试陈诉,假如测试陈诉上显示的是有fail的处所,该版本就应被视之为fail,不能被送给QA举办进一步的测试,直到所有的单位测试乐成才气被送交QA。

三、如安在Spring下书写一个单位测试要领

3.1利用spring的注入特性书写一个单位测试

Spring是一个好对象,一切依赖注入,连单位测试都酿成了依赖注入了,这省去我们许多贫苦。 我们可以将web工程中的applicationContext、Datasource甚至iBatis可能是Hibernate的配署都可以注入给junit,这样使得我们可以用IoC的要领来书写我们的单位测试类。 此处,我们利用的junit为4.7, 而相关的spring-test库文件为3.1,我都已经在pom.xml文件中注明白. 我们先在eclipse里成立一个专门用来放单位测试类的src folder:test/main/java。 留意一下单位测试类的coding convention:
  • 所有的测试类必需以Test开头
  • 所有的测试要领名必需为public范例而且以test开头
  • 所有的测试类全部放在test/main/java目次下,不行和src/main/java混放
  • 通向架构师的路线(第二十  <a href=劳务调派打点系统 五天)SSH 的单元测试与 dbunit 的整合" src="/uploads/allimg/c180321/15215L2142K50-32139.jpg" /> 通向架构师的路线(第二十  <a href=劳务调派打点系统 五天)SSH 的单元测试与 dbunit 的整合" src="/uploads/allimg/c180321/15215L21442620-4Q41.jpg" />