我们目前正在运行 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=".\obj\Release\WebProject.zip";PackageAsSingleFile=True
我们需要对我们的代码运行自动化测试,这些代码在我们在机器上构建时自动运行(可能是构建后事件),但也在 Jenkins 为该项目构建时运行。
如果你像这样运行它,它不会构建单元测试项目,因为 web 项目不引用测试项目。测试项目将引用 web 项目,但我很确定这会破坏我们的自动化构建,因为它们主要用于构建和打包我们的部署。运行这些测试应该是自动化构建和打包过程中的一个步骤。
选项 ...
问题 ...
初始问题。
我们希望在构建主项目时运行我们的测试。但是向针对测试项目运行的 Web 项目添加构建后事件不起作用,因为 Web 项目不引用测试项目并且不会触发此项目的构建。我可以继续……但这已经足够了……
我们花了大约一周的时间试图使这项工作顺利进行,但没有成功。如果您觉得可以得到更好的回复,请随时编辑此内容...
最佳答案
在 Jenkins / hudson ,有很多工作是可以的。一些用于执行编译触发的版本控制更改,一些用于运行由成功构建触发的(单元)测试,一些用于执行由成功的早期测试触发的更多测试(集成),一些用于部署,由成功通过所有测试触发。
查看连接、构建管道、参数化触发器等插件以帮助解决此问题。
通过使用多个节点,这也将允许事情并行发生。试图在一份工作中塞满所有东西并不是要走的路。
关于continuous-integration - 以自动化方式在 Jenkins/Hudson 中运行单元测试,从开发到构建服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13056067/