注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭研自动组

快乐耕耘,收获成长!

 
 
 

日志

 
 

基于White+NUnit的客户端测试框架——NAnt自动构建  

2011-02-25 14:30:54|  分类: 技术调研 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
作者:都都

NAnt的加入主要是为了方便代码的编译、执行等,完成自动构建。

NAnt首页:http://nant.sourceforge.net/

1       Build文件

在我们的框架中,由于存在Listenerpopo两个项目,分别需要为其编写一个独立的.build文件,另外在整个solution中,需要有一个总的.build文件。Build文件如下:

addin.build

<?xml version="1.0"?>

<project name="addin" default="build">

  <property name="output.dir" value="../popo/bin" />

  <property name="output.dll" value="../popo/bin/listener_add.dll" />

  <property name="lib.dir" value="../popo/lib/" />

  <property name="nunit.dir" value="D:/dev/NUnit-2.5.9.10348/bin/net-2.0/addins"/>

 

  <target name="copyfile">

    <mkdir dir="${output.dir}"  unless="${directory::exists(output.dir)}"/>

    <copy todir="${output.dir}">

      <fileset basedir="${lib.dir}">

        <include name="*.dll"/>

      </fileset>

    </copy>

  </target>

   

  <target name="compile" depends="copyfile">

    <csc target="library" output="${output.dll}"  debug="true">

      <references basedir="${lib.dir}">

        <include name="*.dll" />

      </references>

      <sources >

        <include name="**/Listener.cs" />

      </sources>

    </csc>

  </target>

 

  <target name="build" depends="compile">

    <mkdir dir="${nunit.dir}" unless="${directory::exists(nunit.dir)}"/>

    <copy file="${output.dll}" todir="${nunit.dir}"/>

  </target>

 

</project>

主要完成3个步骤:

  1. Copy对应的dll
  2. 编译Listener文件
  3.  将编译生成的dll文件copynunit对应目录

popo.build

<?xml version="1.0"?>

<project name="popo" default="build">

  <property name="output.dir" value="../popo/bin" />

  <property name="output.dll" value="../popo/bin/popo.dll" />

  <property name="reports.dir" value="../popo/output/"/>

  <property name="build.dir" value="../popo/bin/" />

  <property name="lib.dir" value="../popo/lib/" />

  <property name="nunit.dir" value="D:/dev/NUnit-2.5.9.10348/bin/net-2.0/"/>

 

  <target name="clean">

    <delete dir="${output.dir}" />

    <delete dir="${reports.dir}" />

  </target>

 

  <target name="copyfile" depends="clean">

    <mkdir dir="${output.dir}"  unless="${directory::exists(output.dir)}"/>

    <copy todir="${output.dir}">

      <fileset basedir="${lib.dir}">

        <include name="*.*"/>

      </fileset>

    </copy>

  </target>

   

  <target name="compile" depends="copyfile">

    <csc target="library" output="${output.dll}"  debug="true">

      <references basedir="${lib.dir}">

        <include name="*.dll" />

      </references>

      <resources prefix="popo." dynamicprefix="true">

        <include name="**/*.resx"/>

      </resources>

      <sources>

        <include name="**/*.cs" />

      </sources>

    </csc>

  </target>

 

  <target name="build" descrpition="builds all and runs tests" depends="compile" >

    <mkdir dir="${reports.dir}"  unless="${directory::exists(reports.dir)}"/>

    <exec program="${nunit.dir}nunit-console">

      <arg value="${output.dll}"/>

      <arg value="/xml=${reports.dir}${XML_FILE}"/>

      <arg value="/output=${reports.dir}${LOG_FILE}"/>

      <arg value="/run=${TEST_NAME}" if="${TEST_NAME != ''}"/>

    </exec>

  </target>

 

</project>

 

主要完成3个步骤:

  1.   清理上次测试
  2.  Copy dll包并完成编译
  3.   调用NUnit执行测试

其中的XML_FILE, LOG_FILE参数用于指定生成的结果文件和日志文件,也可以根据需要,添加其他参数。

基于整个solutionbuild文件:

<?xml version="1.0"?>

<project name="popo_solution" default="build">

  <target name="*">

    <nant target="${target::get-current-target()}">

      <buildfiles>

        <include name="listener_add/addin.build" />

        <include name="popo/popo.build" />

      </buildfiles>

    </nant>

  </target>

</project>

 

2       NAnt脚本

@echo off

"E:\white-svn\nant-0.90\bin\NAnt.exe" -D:XML_FILE=%1 -D:LOG_FILE=%2 D:TEST_NAME=%3

参数说明:参数1指定输出结果的xml文件,参数2指定log文件,参数3为用例关键字,实现用例过滤。

可以根据需要传入其他参数,如用于过滤用例的用例关键字等。
  评论这张
 
阅读(733)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018