以自动化的方式运行Jenkins / Hudson的单元测试,从开发人员到构建服务器



我们当前正在运行jenkins(Hudson)CI服务器来构建和包装我们的.NET Web项目和数据库项目。一切都很好,但是我想开始编写单元测试,然后只有在单元测试通过时才通过构建。我们正在使用内置的MSBUILD任务来构建Web项目。与以下参数...

MsBuild Version           .NET 4.0
MsBuild Build File    ./WebProjectFolder/WebProject.csproj  
Command Line Arguments    ./target:Rebuild /p:Configuration=Release;DeployOnBuild=True;PackageLocation=".objReleaseWebProject.zip";PackageAsSingleFile=True

,我们需要通过在机器上构建时自动运行的代码(可能是后构建事件)进行自动测试,但是当Jenkins为该项目构建时,也可以运行。

如果您这样运行它,则不会构建单元测试项目,因为Web项目没有引用测试项目。测试项目将引用Web项目,但我敢肯定,这将屠杀我们的自动化构建,主要是为了构建和包装我们的部署。运行这些测试应该是自动化构建和包装过程中的一步。

选项...

  1. 创建两个Jenkins作业。一个运行测试...如果测试通过,则触发另一个构建,以构建和包装Web项目。将邮政构建活动放在测试项目上。
  2. 构建解决方案而不是项目(确保解决方案包含所需的测试),并将后构建事件放在任何可以运行Nunit控制台运行测试的测试项目上。然后使用命令行将每个垃圾箱和内容目录中的所有必需文件复制到一个软件包中。
  3. 只需在詹金斯(Jenkins)而不是詹金斯(Jenkins)的Web项目中构建测试项目即可。测试项目将引用Web项目(取决于您正在测试的内容)并构建它。

问题...

  1. 有两个工作,没有一个。两件事要调试。一个看测试是否通过,一个来构建和编译Web项目。测试可能会通过,但是如果您正在测试的内容未使用的东西,则构建可能会失败...
  2. 这要求我们确切知道构建中的内容。现在,MSBUILD为我们做了这一切。如果您每次创建一个额外的文件夹时都有多个在项目上工作的团队,则必须担心可能易碎的命令行语句。
  3. 这似乎是我们在这里的主要目的的腐败。在此过程中,测试应该是此过程中最重要的一步。我也不100%确定触发的构建与普通构建相同,它可以完成与普通构建相同的所有操作。以相同方式移动所有正确的文件,将它们全部移动到相同的目录等。

初始问题。

我们希望每当我们的主要项目构建时进行测试。但是,将邮政构建事件添加到针对测试项目的Web项目中不起作用,因为Web项目没有引用测试项目,并且不会触发该项目的构建。我可以继续...但是就足够了...

我们花了大约一个星期的时间试图使这项工作很好地完成,但没有成功。如果您觉得可以得到更好的回复,请随时编辑...

在詹金斯(Jenkins)/哈德森(Hudson)中,有很多工作是可以的。有些用于进行编译触发版本控制更改,有些用于运行(单位)测试是由成功构建触发的,有些用于进行更多的测试(整数),该测试(整数)通过成功的早期测试而进行,有些用于部署,通过成功通过所有测试触发。

触发。

查看插件,例如加入,构建管道,参数化触发器等,以帮助此插件。

这也将允许使用多个节点并行发生。试图将一项工作中的所有东西都塞进去。

最新更新