Jos*_*sso 9 command-line mstest
我正在尝试让MSTest.exe运行,似乎testcontainer没有被正确读取; 而我的测试都在Visual Studio中的所有配置环境中成功运行.
我正在使用的命令是:
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" /nologo /usestderr /testSettings:"C:\temp\MyProject\Sources\MyProject\Local.testsettings" /searchpathroot:"C:\temp\MyProject\Binaries" /resultsfileroot:"C:\temp\MyProject\TestResults" /testcontainer:"C:\temp\MyProject\Binaries\MyProject.Services.Server.UnitTests.dll"
Run Code Online (Sandbox Code Playgroud)
testcontainer项目中的项目引用如下所示:
<ItemGroup>
<ProjectReference Include="..\..\Services\MyProject.Services.Server\MyProject.Services.Server.csproj">
<Project>{92EC1999-CC0C-47DD-A4D6-17C3B1233C50}</Project>
<Name>MyProject.Services.Server</Name>
</ProjectReference>
<ProjectReference Include="..\..\SvcConfiguration\MyProject.ServiceConfiguration.Interfaces\MyProject.ServiceConfiguration.Interfaces.csproj">
<Project>{8E2E7BA9-75DB-458E-A184-AC1030EAD581}</Project>
<Name>MyProject.ServiceConfiguration.Interfaces</Name>
</ProjectReference>
<ProjectReference Include="..\..\SvcConfiguration\MyProject.ServiceConfiguration.Services\MyProject.ServiceConfiguration.Services.csproj">
<Project>{39514766-23A8-45DB-96EA-B6B4D9C8B086}</Project>
<Name>MyProject.ServiceConfiguration.Services</Name>
</ProjectReference>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
ServiceConfiguration.Interfaces和ServiceConfiguration.Services DLL都没有放在TestResults的Out文件夹中.
项目GUID在引用和引用的项目之间匹配.
我在命令行中缺少什么?
mstest.exe不会羞辱所有引用的dll.
请参阅https://web.archive.org/web/20111221110459/http://www.dotnetthoughts.net/2011/11/22/mstest-exe-does-not-deploy-all-items上的博客文章/
您可以使用测试设置文件准确指定将哪些文件复制到测试目录。您可以在 Visual Studio 中创建多个测试设置文件,因此您可以让一个用于从 VS 运行,另一个用于从 MSTest 运行,另一个用于服务器 CI 构建,等等。有关更多信息,请参见此处:创建测试设置以从 Visual Studio 运行自动化测试
使用该/testsettings:<filename>选项在命令行上指定它。
起初似乎让人们感到困惑的是,默认情况下,MSTest 的“当前目录”不是 MSTest 启动目录,而是测试结果的 Out 文件夹。
如前所述,MSTest 不能正确推断所有使用的程序集,如果您没有直接引用,它不会复制程序集。也就是说,Visual Studio 在其构建中也有类似的行为,所以很多人通过添加虚假代码引用来解决这个问题 - 一个糟糕的解决方案 - 我不推荐它。
但是,本机 DLL 的问题更大,我发现在测试配置(测试设置)中显式复制它们对它们有效,就像托管程序集一样。