用MSBuild和Jenkins搭建持续集成环境(4)

ItemGroup里现在又多了三个Item:NUnitConsole指向NUnit控制台运行器(console runner);UnitTestDLL指向单元测试项目生成的DLL文件;TestResultsPath是要传给NUnit的,这样测试结果就会放到BuildArtifacts目录下。

RunUnitTests Target用到了Exec Task。如果有一个测试运行失败,NUnit控制台运行器会返回一个非0的结果。这个返回值会告诉MSBuild有个地方出错了,于是整个构建的状态就是失败。

现在这个脚本比较完善了,用一个命令就可以删除旧的构建产物、编译、运行单元测试:

C:\HelloCI\> msbuild HelloCI.msbuild /t:RunUnitTests

我们还可以给脚本设一个默认Target,就省得某次都要指定了。在Project元素上加一个DefaultTargets属性,让RunUnitTests成为默认Target。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="RunUnitTests">

你还可以创建自己的Task。这里有个例子,AsyncExec,它允许人们以异步的方式执行命令。比如有个Target用来启动Web服务器,要是用Exec命令的话,整个构建都会停住,直到服务器关闭。用AsyncExec这个命令可以让构建继续执行,不用等待命令执行结束。

本文的完整脚本可以在这里下载

在接下来的文章中,我会讲述如何配置Jenkins。我们不再需要手动运行命令来构建整个项目,Jenkins会检测代码库,一旦有更新就会自动触发构建。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3766cdf148852688548331b029561d7e.html