从控制台运行xunit

时间:2014-01-09 18:26:34

标签: console xunit xunit.net

我有可能是一个愚蠢的问题。

我正在尝试从命令提示符运行xunit dll。

我发现我需要以下dll位于命令提示符所在的文件夹中。

xUnit.Console.exe,xunit.console.exe.config,xunit.dll,xunit.runner.utility.dll

这很好我想但是我无法让它来运行我的测试。

起初我尝试使用我的测试dll的相对路径,但它没有。

然后我将测试dll放在带有上述dll的文件夹中并运行它。结果是它说我错过了我的测试dll的依赖。

然后我将xunit文件放在我的测试项目dll的bin文件夹中,它告诉我它甚至找不到它旁边的测试dll。

考虑到以下结构,这一切看起来非常困难,我想要做到这一点

--src

----tools

------xUnit

--------all my xunit dlls

----projects

------MyTestProject

-------bin

---------MyTestProject.dll

让我们说

c:\Src\Tools\xUnit>xunit.console ..\\..\Projects\MyTestProject\bin\MyTestProject.dll

4 个答案:

答案 0 :(得分:1)

两种解决方案: 1)将C:\src\Tools\xUnit添加到PATH环境变量,并从当前目录为C:\src\projects\MyTestProject\bin的命令提示符运行xunit控制台应用程序。

2)根据第一个建议,而不是将其放在PATH环境变量中,在命令行上指定xunit.console.exe的整个路径(相对或绝对)作为要运行的可执行文件。

答案 1 :(得分:1)

  • 运行命令提示符

  • 运行下一条命令,并将'path_to_xunit_console'替换为xunit控制台的路径

    set PATH=%PATH%;path_to_xunit_console_exe
    
  • 移动到单元测试二进制项目的位置:

    cd  my_test_binary_folder   
    
  • 运行下一个命令,并将日志保存到xml文件:

    xunit.console your_test_dll_file   -xml testlog.xml
    

要了解不同的选项,请运行:

   xunit.console -?

您可以通过在二进制测试文件夹中创建一个批处理文件test.cmd来自动执行这些步骤:

 set PATH=%PATH%;path_to_xunit_console_exe
 xunit.console your_test_dll_file   -xml testlog.xml

答案 2 :(得分:0)

我结束了用C#构建xUnit控制台测试运行器的过程,以循环并运行给定文件夹中的所有xUnit测试程序集。

我想到的结构是xUnit测试运行程序,名为RunXUnitTests,位于测试程序集上方一层的文件夹中,其中包含可执行文件和所需的各种支持dll。例如,此运行XUnitTests文件夹中包含NLog日志记录支持和一些用于发送结果电子邮件的电子邮件支持dll。

立即在RunXUnitTests测试运行程序文件夹下,存在一个“ TestAssemblies”文件夹,所有xUnit测试程序集dll以及测试本身所需的所有支持dll都放入该文件夹中。另外,所有xunit.console.exe运行时文件都在TestAssemblies文件夹中。将所有测试及其依存关系放在与测试运行程序分开的同一TestAssemblies文件夹中,这最令人困惑。

要运行测试,C#测试运行器应用程序将从控制台提交命令行到System.Diagnostics流程执行API,并以xunit.console.exe命令作为运行的流程,以及测试程序集和(xml)结果文件作为命令行参数。

典型的命令行,用于操作准备测试(ORT),由测试运行者格式化并提交给process.Start()方法调用(其中过程对象的类型为System.Diagnostics.Process),如下:

"C:\RunXUnitTests\TestAssemblies\xunit.console.exe" "C:\RunXUnitTests\TestAssemblies\SharePointBasicFeaturesORT.dll"  -xml "C:\Users\Public\Documents\TestResults\SharePointBasicFeaturesORT.xml"

运行测试后,测试运行程序有一些例程可以遍历XML结果文件,提取结果,格式化结果摘要电子邮件(以HTML格式)并将电子邮件发送到通讯组列表。

我应该提到,所有这些都打包成可安装的MSI文件,这些文件可以部署到Windows 7/10 PC或VM进行测试运行。我们正在使用它来按计划每天在我们的Web应用程序上运行SpecFlow + xUnit“操作准备测试”。我们使用Wix#(“ WixSharp”)安装程序在C#中构建我们的安装程序,然后让Wix Installation Toolset构建标准的MSI安装程序文件。有关更多信息以及源代码和二进制文件,请参见https://github.com/oleg-shilo/wixsharp。一旦掌握了它,它就可以很好地工作。

是的,这样做的工作量很大。如果您的组织已经有其他可以完成此工作的DevOps类型工具,例如Jenkins,TeamCity,Bamboo,Azure for DevOps等,我将不建议这样做。我的组织仍在“引入”此类工具的过程中,在短期内发展测试运行者比获得组织决策,财务承诺以及对DevOps / CI工具的安装和配置支持更可行。

如果您没有现成的DevOps / CI工具访问权限,则这种类型的方法将使用免费提供的开放源代码工具(除了MS Visual Studio的付费版本;我不知道社区版本的用途和作用)。 t工作),并且可以作为通往更复杂环境的桥梁。

答案 3 :(得分:0)

找到xUnitConsole.exe的方法 在以下位置搜索包

%userprofile%.nuget \ packages

.nuget \ packages \ xunit.runner.console->您的版本 已安装->工具-> xUnitConsole.exe