我有可能是一个愚蠢的问题。
我正在尝试从命令提示符运行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
两个解决方案:1)将C:\src\Tools\xUnit
添加到PATH环境变量中,并从命令提示符运行xunit控制台应用程序,其中当前目录为C:\src\projects\MyTestProject\bin
。
2)根据第一个建议,而不是将其放在PATH环境变量中,在命令行上指定xunit.console.exe的整个路径(相对或绝对)作为要运行的可执行文件。
set PATH=%PATH%;path_to_xunit_console_exe
cd my_test_binary_folder
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
我在C#中构建了一个xUnit控制台测试运行器,以循环并运行给定文件夹中的所有xUnit测试程序集。
我结束的结构是xUnit测试运行器,名为RunXUnitTests,位于测试程序集上一级的文件夹中,带有可执行文件和所需的各种支持dll。例如,NLog日志记录支持和一些用于发送结果电子邮件的电子邮件支持dll位于此RunXUnitTests文件夹中。
紧接在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“Operational Readiness Tests”。我们使用Wix#(“WixSharp”)安装程序在C#中构建我们的安装程序,然后让Wix安装工具集构建标准的MSI安装程序文件。有关更多信息以及源和二进制文件,请参阅https://github.com/oleg-shilo/wixsharp。一旦掌握了它,它就能很好地工作。
是的,这样做是相当多的工作。如果您的组织已经有其他DevOps类型的工具可以完成这项工作,我不推荐它,例如,Jenkins,TeamCity,Bamboo,Azure for DevOps等。我的组织仍然“正在”引入这些工具,它在短期内更容易发展测试运行器,而不是为DevOps / CI工具获得组织决策,财务承诺以及安装和配置支持。
如果您没有准备好访问DevOps / CI工具,这种方法使用免费提供的开源工具(除了付费版本的MS Visual Studio;我不知道社区版本的功能和功能不适用于并且可以作为通向更复杂环境的桥梁。