目前我正试图在Jenkins上设置自动测试。我有一个包含4个不同项目的Visual Studio解决方案,其中一个是我的NUnit测试项目,其他3个项目都有几个测试。
1 我在Visual Studio中为我的Nunit测试项目添加了一个PostBuild-Event,其中包含以下内容:
`$(SolutionDir)Libs\NUnit-2.6.0.12051\bin\nunit-console.exe $(TargetPath)`
它工作正常,但这是典型的方法吗? Test项目是我构建顺序中的最后一个项目,我认为将PostBuild事件添加到其他3个项目中是不合理的?
2 正如您在上面给出的路径上看到的,我的Visual Studio项目文件夹有一个名为“Libs”的文件夹。这是我放置依赖项的地方,也是NUnit。但NUnit文件夹大约有8MB。你能告诉我哪些文件可以删除吗?因为否则每次提交源控件时,用户必须仅为NUnit传输8MB,这是我想的。
我肯定需要nunit.framework.dll才能构建测试。我还需要console-runner.exe才能运行测试。但我还需要什么呢?不幸的是,console-runnter.exe对其他一些文件有依赖性,没有它们就崩溃了。
谢谢
答案 0 :(得分:3)
我一直在使用一种稍微不同的方法在Jenkins下将NUnit与Visual Studio(C#,MSBuild)集成。 VS解决方案包含几个项目,它们构建了大约10个DLL和1个应用程序。 Visual Studio解决方案不会调用NUnit。
与“应用程序”代码并排放置包含测试代码的目录。有一个独立构建的测试解决方案。它引用了应用程序解决方案的输出。
Visual Studio和NUnit都作为运行Jenkins的构建计算机上的应用程序安装。
我们的基本目录布局
Jenkins的基本构建步骤
使用Windows批处理文件步骤,在Tests / Tests.sln上调用NUnit:
nunit-console.exe Tests\Tests.sln /xml=nunit-test-results.xml /labels
使用xUnit Jenkins插件设置后期构建操作以处理nunit-test-results.xml
并显示结果。
答案 1 :(得分:0)
回答你的两个问题:
我在Test项目中使用post build事件以与您描述的相同方式运行NUnit控制台。在我们的环境中运作良好。
正如您所说,您需要将nunit.framework.dll
包含在构建测试中。要运行它们,NUnit控制台将只使用以下文件非常愉快地运行:
bin\nunit-console.exe
bin\nunit-console.exe.config
bin\lib\nunit.core.dll
bin\lib\nunit.core.interfaces.dll
bin\lib\nunit.util.dll
bin\lib\nunit-console-runner.dll
这相当于NUnit 2.6的大约500KB的文件。
答案 2 :(得分:0)
我建议编写一个脚本文件,而不是在Jenkins中定义多个步骤。我们使用powershell来调用msbuild和nunit-console。这样,我们的开发人员可以在提交之前简单地调用这个powershell脚本。如果构建/测试/捆绑/部署步骤是自包含的,那么设置Jenkins(或任何其他构建服务器)也要容易得多。