c# - 使用 NUnit 作为可部署的测试套件

标签 c# testing nunit

我在基于开发人员的测试的单元测试场景中大量使用了 NUnit,但我想要的是利用 GUI 和测试功能为我的 QA 团队提供一个可以针对所有组件或部分组件等运行的测试套件,因为 GUI 非常适合这样做。

但是我一直在努力解决的是如何在我的解决方案中对其进行建模、我需要部署什么、如何部署 NUnit 等。

我打算有一个用于测试的类库,一个由 QA 团队运行的控制台应用程序,他们可以传递参数来自动运行测试子集,这将生成 NUnit 控制台并运行这些测试,或者如果他们只是在没有参数的情况下运行我的控制台应用程序,它会加载 NUnit GUI,他们可以浏览他们喜欢的任何测试。

但是由于 NUnit 被部署为一个大型二进制项目,需要由 Process.Start 运行,我不确定如何部署它,因为 NUnit 有一个很大的目录结构,我不确定如何将其包含在我的项目构建中,它会在哪里等等。

有没有人做过类似的事情并对如何最好地做到这一点有任何建议?

最佳答案

部署 nunit 二进制文件的一种方法是使用 NuGet - 有一个 NUnit.Runner nuget 包,其中包含所有二进制文件、gui 等 - 您只需要提供可测试的二进制文件。

因此 - 在您的 CI/构建过程中创建一个步骤,该步骤将创建一个仅包含您的测试和支持程序集的 nuget 包。在 .nuspec 文件中,将“NUnit.Runner”设为依赖包。现在您有了一个 nuget 包,其中包含您的所有内容以及您需要的所有 NUnit .exe 的链接...下一个挑战是将此包放到您的测试人员桌面上。最好的方法是使用您自己的私有(private) NuGet 源/服务器或 NaaS...myget.org。

在这一点上,我会说我创建了以下解决方案 - 我认为还有其他可用的解决方案,例如 Chocolatey 就是这样做的。

我构建了一个名为“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

关于c# - 使用 NUnit 作为可部署的测试套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10497565/

相关文章:

c# - 使用 C# 将列表转换为数组

testing - 无法实例化规范 'KernelTest'

node.js - 为 REST api NodeJS MongoDB 编写测试

.net - 为什么 NUnit 需要旧版本的框架?

c# - 让 NUnit 在 Visual Studio Community 2017 下工作

c# - nunit 测试仅在作为 tfs msbuild 进程的一部分运行时抛出异常

c# - Log4Net:如何获取记录器?

c# - 另一个 ASP :Textbox vs <input type ="text">

c# - Asp.Net Core 中 Kendo Grid 中的 DropDownList

unit-testing - 单元测试复合函数