如何指定自定义参数,使用 xunit.runner.console

How to specify custom parameters, using xunit.runner.console

我有一个 C#/Selenium/Specflow 测试套件,我 运行 使用 Jenkins xunit.console.exe。我需要将这些测试指向不同的环境(Test/QA/Prod 等)并想使用命令行参数。

我调用的批处理命令是: "%WORKSPACE%\packages\xunit.runner.console.2.1.0\tools\xunit.console" "%WORKSPACE%\[MyProject]\bin\Debug\eDC6.Test.Specs.dll" -xml test_output.xml

并希望包括一个额外的参数,例如:"-env=PROD" 以将该作业指向特定环境。

我愿意接受更好的方法。

IIRC 我在 2010 年之前的 codeplex 时代的 xunit 论坛中提出并自我回答了这个问题作为功能请求,但无法在 atm 上找到它(也许我是在 CodeRush 的测试运行器的背景下问的) .无论哪种方式,以上是当时的答案,它仍然有意义,因为它是测试运行器和 CI 工具中立的。

这通常由环境变量解决,即使用 GetEnvironmentVariable

需要考虑的一件事是,想要使用 Visual Studio 等跑步者的人需要相应地进行调整。 .NET Core 对具有这种性质的环境选择器具有内在支持,这也可能是一种有用的方法,因为随着时间的推移,它可能会在编辑器和其他工具中公开。

最后,最低级别的 hack 可能是将其粘贴到 .config 设置中,即 <DllName>.dll.config 并进行必要的传递。

对于此解决方案,额外的命令行为我提供了更大的灵活性:

"%WORKSPACE%\packages\xunit.runner.console.2.1.0\tools\xunit.console" "%WORKSPACE%[MyProject]\bin\Debug\eDC6.Test.Specs.dll" -TargEnv QAConfig.json - xml test_output.xml