通过命令行向NUnit传递参数

32

是否有办法通过命令行将值传递给NUnit测试?

我的测试使用一个特定的URL。我在不同的URL上有不同实例的代码,并希望通过命令行指定URL。文件App.config不是选项,因为我想通过批处理文件为不同的URL运行测试。


你尝试过使用Environment.GetCommandLineArgs吗?那个方法有效吗?http://msdn.microsoft.com/en-us/library/system.environment.getcommandlineargs.aspx - Paddyslacker
4个回答

25

使用环境变量传递信息。

在命令行中使用set或者在NAnt中使用<setenv>,然后使用Environment.GetEnvironmentVariable()读取该值。


8
NUnit 3现在允许传递参数。以下是用法。
nunit3-console [inputfiles] --params:Key=Value

来自文档

--params|p=PARAMETER

以NAME=VALUE的形式指定测试参数,供测试使用。可以通过分号或多次重复--params选项来指定多个参数。区分大小写。

以下是如何通过代码访问参数:

var value= TestContext.Parameters.Get("Key", "DefaultValue");

2

目前似乎没有解决方案。最好的选择是使用NUnit项目文件,在那里修改设置,然后将解决方案文件传递给运行器。


1

我遇到了类似的问题。Achim的答案让我找到了正确的方向,对于其他读者:

创建一个文件,例如example.nunit,内容如下:

<NUnitProject>
  <Settings activeconfig="local"/>
  <Config name="local" configfile="App.config">
    <assembly path="bin\Debug\example.dll"/>
  </Config>
  <Config name="dev" configfile="App.Dev.config">
    <assembly path="bin\Debug\\example.dll"/>
  </Config>
  <Config name="test" configfile="App.Test.config">
    <assembly path="bin\Debug\\example.dll"/>
  </Config>
</NUnitProject>

所有配置和程序集文件的路径(包括 App.config、App.Dev.config 等文件)都是相对于 NUnit 文件的位置。同时,这些文件也是 .NET 配置文件。

当你想要针对某个特定的配置运行它时,请按照以下方式执行:

nunit3-console.exe example.nunit /config:test

有关NUnit文件格式的更多信息,请参见NUnit项目XML格式

有关命令行参数的更多信息,请参见http://www.nunit.org/index.php?p=consoleCommandLine&r=2.2.5


@Achim 尝试通过在 nunit 文件中添加配置来执行上述方法,但是会抛出错误消息 - 无法定位 Fixture。 \nunit-console-x86.exe $env_config /config:CI /run:$feature $dll_dir /result=$result_dir - ReuseAutomator
我已经尝试过这样做,但它似乎忽略了我的App.Dev.config文件,只运行App.Config设置。 - Tree55Topz
有几件事可以尝试:更改dev.config中的某些内容,以确保使用哪个配置文件。将app.config放在错误的位置上,看看它是否仍在运行或抛出找不到文件的错误。 - Maarten Kieft
我尝试过这个,但是 configfile 参数似乎需要一个 app.config 文件。可能与 nunit-console 帮助信息末尾的警告有关,我猜测需要 NUnitProjectLoader 和/或 VSProjectLoader。但是对我来说,传递一个 app.config 文件就足够了,所以我就停在那里了。此外,请参阅 https://dev59.com/RW855IYBdhLWcg3wlVca 以添加/使用 app.config 中的变量。 - Chris
最后一个链接已经(有效地)失效:“遗留文档。帮助文件已经移动到新位置。您要查找的页面未找到。”(并且重定向链接也无法工作。) - Peter Mortensen
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接