如何使用 NUnit 3 在 Atlassian Bamboo 中运行 NUnit Runner?

Posted

技术标签:

【中文标题】如何使用 NUnit 3 在 Atlassian Bamboo 中运行 NUnit Runner?【英文标题】:How to run NUnit Runner in Atlassian Bamboo with NUnit 3? 【发布时间】:2015-12-02 21:49:23 【问题描述】:

我在 Atlassian Bamboo(最新版本)中使用 NUnit Runner 和 NUnit 2,但升级到 NUnit 3 后它不再工作。 NUnit 3 中的命令行似乎发生了一些变化。有人知道如何使 NUnit 3 在 Atlassian Bamboo 中工作吗?或者 NUnit 开发人员是否可以考虑为这一重大变化提供向后兼容性?

我收到以下错误:

无效参数: -xml=TestResults-Rev_02f5436a0a70cd539bd3b77218fb48cbe3262954-Build_12.xml

【问题讨论】:

尝试使用这里描述的我的变体***.com/questions/40087902/… 【参考方案1】:

最简单的解决方案是创建一个 bat 文件,将 -xml 参数替换为 --result。

在 Nunit runner 目录(默认为 C:\Program Files (x86)\NUnit.org\nunit-console)中创建一个 bat 文件,并将后续行复制到其中。

@echo off 
SET "var=%*"
CALL SET var=%%var:-xml=--result%%
nunit3-console.exe %var%;format=nunit2

然后将bat文件地址作为Nunit runner的可执行路径。

【讨论】:

我收到一条错误消息,指出 nunit3-console.exe 不是可识别的命令@Bashir 抱歉,回答晚了,如果您安装了 unit runner 3,您应该在安装文件夹中有 nunit3-console.exe(默认为 C:\Program Files (x86)\NUnit.org\nunit-控制台)并且您应该将bat文件放在同一文件夹中,因此bat文件应该能够归档nunit3-console.exe,顺便说一下您也可以尝试使用nunit3-console.exe的完整路径。跨度> 如果路径包含空格,请在命令周围加上引号。最后一条语句如下所示:"%~dp0nunit3-console.exe" %var%;format=nunit2【参考方案2】:

希望 Atlassian 团队尽快更新 Bamboo 以支持 NUnit 3。我建议向他们提交请求。如果他们有任何问题,NUnit 团队将很乐意为他们提供帮助。

NUnit 将不支持向后兼容的命令行,但您可以通过修改测试执行任务让 Bamboo 现在工作。

我没有用过 Bamboo,但是在 AppVeyor 上,我们不得不禁用自动测试检测和运行,然后我们不使用内置的 NUnit 任务,而是直接执行新的 nunit3-console,传入测试程序集。

如果 Bamboo 解析并显示测试结果,您可以使用命令--result=TestResults.xml;format=nunit2 指示 NUnit 3 生成版本 2 格式的 XML

【讨论】:

【参考方案3】:

另外,仅供参考,-xml 选项已弃用 3 年!

我假设竹子会根据用户提供的设置为 NUnit 生成命令行选项。由于 NUnit 3.0 与 v2 系列相比有如此大的变化,因此开发人员可能希望将其视为一个全新的框架。事实上,NUnit 3.0 引擎正是这样做的,将 NUnit V2 视为“外来”框架并使用特殊的驱动程序来运行其测试。

【讨论】:

【参考方案4】:

您遇到了这个问题,因为nunit-3 不再使用-xml 标志,而是被--result 取代。竹 nunit 跑步者未更新,仍然生成旧 nunit 使用的标志。

创建一个包含以下内容的 bat 文件。不要使用竹子中的 nunit 可执行文件,而是使用 bat 文件。

@echo off 
SET projectvar=%1
SET xmlvar=%2
SET executable=C:\Program Files (x86)\NUnit-3.4.1\bin\nunit3-console.exe
CALL SET xmlvar=%%xmlvar:-xml=--result%%
SET outputvar=%3;format=nunit2
SHIFT
SHIFT
SHIFT
SET remvar=%1
:loop
SHIFT
if [%1]==[] GOTO afterloop
SET remvar=%remvar% %1
GOTO loop
:afterloop
%executable% %projectvar% %xmlvar% %outputvar% %remvar%

【讨论】:

以上是关于如何使用 NUnit 3 在 Atlassian Bamboo 中运行 NUnit Runner?的主要内容,如果未能解决你的问题,请参考以下文章

使用参数并行运行 nunit 测试 (nunit 3.8.x)

使用 NUnit 时,我应该如何在运行时修改 app.config?

如何使用Nunit进行测试

如何将非托管库引用添加到 NUnit 测试

如何在需要括号的 NUnit 中编写流畅的约束

Selenium:如何使用 NUnit 创建测试证据报告