使用vstest.console.exe运行c ++ unittest而不安装Visual Studio

时间:2014-07-16 18:15:11

标签: unit-testing visual-studio-2013

我将TestWindow文件夹(C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow)复制到未安装Visual Studio并尝试运行vstest的计算机上。 x64 cpp test dll上的console.exe命令。

vstest.console.exe tests.dll /tests:testmethod1 /platform:x64 /logger:console

这是我在事件日志中看到的错误。

Application: vstest.discoveryengine.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
   at Microsoft.VisualStudio.TestPlatform.TestRunnerService.DataCollectors.DataCollectionPluginManager..ctor()
   at Microsoft.VisualStudio.TestPlatform.TestRunnerService.WcfTestRunnerService..ctor(System.Threading.ManualResetEvent)
   at Microsoft.VisualStudio.TestPlatform.TestRunnerService.TestRunnerServiceHost.CreateServiceHost(System.String, System.Threading.ManualResetEvent)
   at Microsoft.VisualStudio.TestPlatform.TestRunnerService.ServiceMain.Main(System.String[])

3 个答案:

答案 0 :(得分:3)

FileNotFoundException是由于某些必需的程序集丢失所致。我使用WinDbg发现了这些并将它们复制到TestWindow文件夹。

 - Microsoft.VisualStudio.Diagnostics.Measurement.dll
 - Microsoft.VisualStudio.Diagnostics.ServiceModelSink.dll
 - Microsoft.VisualStudio.QualityTools.Common.dll
 - Microsoft.VisualStudio.QualityTools.ExecutionCommon.dll
 - Microsoft.VisualStudio.QualityTools.Resource.dll
 - Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

可以在安装了Visual Studio的计算机上的C:\windows\assembly\GAC_MSIL找到这些程序集。

我还注意到,如果我从/tests命令中删除vstest.console开关,则不需要这些额外的dll。

还将以下dll复制到TestWindow文件夹(以说明目标机器没有visual c ++运行时的情况)

 - C:\Windows\System32\msvcr120.dll
 - C:\Windows\System32\msvcp120.dll

答案 1 :(得分:0)

除了拥有TestWindow文件夹和上述GAC程序集(确保您具有与您的Visual Studio版本匹配的GAC程序集版本)和VSC ++程序集(如果需要)之外,我还需要确保最新版本的.NET Framework安装。我正在使用VS 2012 vstest.console.exe,并且在安装.NET Framework 4.5.2 Windows Update后能够运行帮助菜单。

答案 2 :(得分:0)

我找到了一个简单的解决方案:只需在服务器上安装Visual Studio Agents即可。

(在这种情况下,无需复制/通过TestWindow文件夹。)