我在基于开发人员的测试的单元测试场景中经常使用NUnit,但我想利用GUI和测试功能为我的QA团队提供他们可以为所有组件或部分组件运行的测试套件等因为GUI非常适合。
但是我试图解决的问题是如何在我的解决方案中对其进行建模,我需要部署什么,如何部署NUnit等。
我将有一个用于测试的类库,一个由QA团队运行的控制台应用程序,他们可以传递参数,以便自动运行一部分测试,这将生成NUnit控制台并运行这些测试,或者如果他们只运行没有参数的控制台应用程序,它会加载NUnit GUI,他们可以浏览他们喜欢的任何测试。
但是当NUnit被部署为一个大型二进制项目时,需要由Process.Start运行,我不知道如何部署它,因为NUnit有一个大的目录结构,我不知道如何在我的项目构建中包含它,它将在哪里,等等。
有没有人做过类似的事情,并就如何做到这一点有任何建议?
答案 0 :(得分:2)
部署nunit二进制文件的一种方法是使用NuGet - 有一个NUnit.Runner nuget包,其中包含所有二进制文件,gui等 - 你只需要提供可测试的二进制文件。
所以 - 在您的CI /构建过程中创建一个步骤,创建一个仅包含您的测试和测试的nuget包。支持组件。在.nuspec文件中,使“NUnit.Runner”成为依赖包。现在你有一个nuget包,其中包含你需要的所有NUnit .exes的所有内容和链接......接下来的挑战是将这个软件包放到你的测试人员桌面上。最好的方法是使用您自己的私有NuGet提要/服务器或NaaS ... myget.org。
此时我会说我创建了以下解决方案 - 我认为还有其他解决方案,例如巧克力就是这样。
我构建了一个名为“sidewinder”的nuget包(sidewinder.codeplex.com) - 这个包包含“sidewinder.exe” - 这个exe将从任何nuget feed(官方,myget,自定义)下载一个nuget包,然后解压缩包的内容并将文件复制到您选择的任何文件夹。因此,如果您的CI过程创建了测试程序集的新软件包版本,则sidewinder.exe一旦安装在您的测试人员计算机上,就能够检测到新版本,下载,解压缩并部署它。您甚至可以在运行正确命令行的程序包中包含批处理文件,以启动gui或控制台运行程序。
对于奖励积分,有一个自动版本--wolfpack(http://wolfpack.codeplex.com)有一个插件(http://wolfpackcontrib.codeplex.com/wikipage?title=Wolfpack.Contrib.Deployment )可以监视特定包的新版本的nuget feed并自动下载,解压缩并运行nunit测试 - 它将根据测试结果创建通知。
HTH