上篇文章中,谈到了CC.Net的安装,部署。并且实现了监视vss源代码服务器,自动获取代码,自动构建,并检查代码规范等内容。本文着重介绍如何用CC.Net来进行自动化单元测试。

CC.Net默认支持的单元测试工具是NUnit,下面也谈一下如何配置实现NUnit的自动单元测试功能。打开CursieControl.Net Server的配置文件CursieControl.Net config,上文中已经创建了一个工程,代码为:

用CruiseControl.Net来进行持续化集成二<cruisecontrol> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<project name="TestProject" webURL="http://127.0.0.1/ccnet/"> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<workingDirectory >E:\DailyBuild</workingDirectory> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<artifactDirectory>E:\DailyBuild\Log</artifactDirectory> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<labeller type="dateLabeller"></labeller> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<sourcecontrol type="vss" autoGetSource="true" applyLabel="true"> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<project>$/Jillzhang.DailyBuild.root/Jillzhang.DailyBuild</project> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<username>zhangyubin</username> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<password>123456</password> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<ssdir>\\192.168.1.200\vss\</ssdir> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<cleanCopy>false</cleanCopy> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</sourcecontrol> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<tasks> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<exec> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<executable>D:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe</executable> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<baseDirectory>E:\DailyBuild</baseDirectory> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<buildArgs>DailyBuild.msbuild /p:Configuration=Release</buildArgs> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<buildTimeoutSeconds>1200</buildTimeoutSeconds> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</exec > 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<merge> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<files> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<file>E:\DailyBuild\log\Build.FxCop.xml</file> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</files> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</merge> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</tasks> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</project> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</cruisecontrol> 
用CruiseControl.Net来进行持续化集成二


要添加NUnit任务,应该在<project>元素中添加<nunit>子元素,有关它的用法也可以参考文档,在上文的四个项目中Jillzhang.DailyBuild.Test是用于单元测试的项目,在<tasks>中添加<nunit>,代码如下:
 

用CruiseControl.Net来进行持续化集成二<nunit> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<path>D:\Program Files\NUnit 2.4.6\bin\nunit-console.exe</path> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<assemblies> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<assembly>E:\DailyBuild\Jillzhang.DailyBuild.Test\bin\Release\Jillzhang.DailyBuild.Test.dll</assembly> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</assemblies> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
<timeout>60000</timeout> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二
</nunit> 
用CruiseControl.Net来进行持续化集成二
用CruiseControl.Net来进行持续化集成二

如果经常使用的nunit是带界面的,它在安装目录中是nunit.exe,而我们在这里要使用它的命令行工具nunit-console.exe,用path来指定这个工具的绝对路径,在<assemblys>中添加要进行单元测试的程序集,注意,为了保证效果,此处的dll最好和msbuild出的dll位置保持一致,比如如果是Debug模式,那此处应该为:E:\DailyBuild\Jillzhang.DailyBuild.Test\bin\Debug\Jillzhang.DailyBuild.Test.dll

好了,添加这行代码之后,我们便可以进行自动化单元测试了,看看效果吧,重新签出嵌入解决方案,打开web dashboard网站。我们可以看到工程的活动状态有如下的变化

在嵌入前

用CruiseControl.Net来进行持续化集成二

嵌入后

用CruiseControl.Net来进行持续化集成二

当vss中有文件版本发生变化的时候,CC.Net能检测到这种变化,并加以处理,在检查更新的时候,状态变为CheckingModifcations.当检查到有更新的时候,CC.Net会启动生成操作,如图:

用CruiseControl.Net来进行持续化集成二

当CC.Net的活动状态再次从Buildding变为Sleeping的时候,表示项目集成完成,此时点击项目名称,可以查看最后一次的集成结果,首先我们可以看此次集成谁更新了项目文件,都更新了那些文件,如图:

用CruiseControl.Net来进行持续化集成二然后我们还可以查看生成结果,相比上文,加入nunit之后,生成结果会多出如下部分:

用CruiseControl.Net来进行持续化集成二也可以通过nunit detail来查看具体信息。

用CruiseControl.Net来进行持续化集成二

具体信息为:

用CruiseControl.Net来进行持续化集成二

在此个页面,你能清晰地看到单元测试是否通过。

接下来介绍一款非好好的检测工具cctray.exe,它实现了对cc.net的实时监控功能,作用和web doashboard差不多。你可以在网站的导航栏中找到它的下载连接:

用CruiseControl.Net来进行持续化集成二

下载安装,打开后cctray是一个这样的界面

用CruiseControl.Net来进行持续化集成二

点击File的Setting选项,出现如下界面:

用CruiseControl.Net来进行持续化集成二

先来添加对一个工程的监测,点击Add

用CruiseControl.Net来进行持续化集成二

点击Add Server

用CruiseControl.Net来进行持续化集成二

CCTray会自动获取工程列表,选择想监测的工程。

最终配置好的cctray如下图所示:

用CruiseControl.Net来进行持续化集成二

双击右方的ListView项,可以打开web dashboard。当有代码有更新的时候,cctray表示如下:

用CruiseControl.Net来进行持续化集成二

通过图标颜色的更改可以清晰的看出当前CC.Net的运行状态

有关自动发布,自动部署等功能留待下篇。

相关文章:

  • 2021-06-06
  • 2021-09-09
  • 2021-06-01
  • 2022-12-23
  • 2021-12-29
  • 2021-06-06
猜你喜欢
  • 2021-06-12
  • 2021-06-19
  • 2021-10-02
  • 2022-01-21
  • 2021-10-30
  • 2021-12-29
  • 2021-08-01
相关资源
相似解决方案