我可以在不安装Visual Studio的情况下使用mstest.exe吗?

我想使用mstest.exe在生成服务器上运行我的unit testing,但是我不想在生成服务器上安装Visual Studio。 我可以在没有Visual Studio的情况下安装MSTest吗?

没有Visual Studio可以运行mstest.exe。
下载下面的Visual Studio ISO 代理之一,并在服务器上安装testing代理

Visual Studio 2017 (127MB磁盘空间,小于下载)
Visual Studio 2015 (128MB安装,需要2GB磁盘空间)
Visual Studio 2012 (224MB)
Visual Studio 2013 (287MB)
Visual Studio 2010 (515MB)

这将安装从命令行运行mstest.exe所需的所有东西,并且比Visual Studio轻得多。 如果我没有记错的话,只需要500M左右的下载和300M左右的空间来安装testing代理。

我想你可能可以,但是它绝对不支持。

我发现这篇博客文章是由一些声称MSTest没有安装Visual Studio的人编写的。

@crocpulsar,你需要在你的构build服务器上安装Visual Studio, 但是你不需要购买额外的许可证

有太多的依赖性让build设和MSTest工作没有安装VS,它是最明确的不支持。

只要开始构build的人员拥有许可证,您就不需要构build服务器。 从2005年的黑暗时代就已经是这样了,只要有版本平价,那么你就没问题。

如果您的团队中的每个人都拥有Ultimate,那么您可以自由将其安装在构build服务器上; 但是如果你的一个团队成员有Premium,那么你最好在生成服务器上安装Premium。 这也使许多其他位,如代码覆盖率,testing影响分析和架构validation等。

这个答案特别适用于Visual Studio 2017,答案是肯定的 。 但是,请注意,Microsoft(仍然)不提供任何官方API来查找相关的可执行文件( MSBuild.exeMSTest.exe ),因此您被卡在读取registry项和/或探测各种目录以find这些文件 。 你已经被警告过了。

  • 如果您只需构build您的unit testing项目,请将MSTest.TestFramework包安装到这些项目中,并从中移除对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用。 现在您只需要安装Visual Studio 2017构build工具并调用msbuild.exe来执行构build。
  • 如果你还需要运行你的testing,事情变得更加棘手:
    • 最简单的解决办法是安装VS2017社区版(包括msbuild和mstest) – 但我不确定这是否合法,而且不是律师,所以要小心!
    • 在法律上更安全的解决scheme(在磁盘空间方面要轻得多)是安装Visual Studio 2017testing代理 , 然后安装Visual Studio 2017的 构build工具 ( 确切顺序至关重要 1 ); 这会给你MSTest.exevstest.console.exe ,然后你可以打电话给。 请注意,实际确定这些可执行文件所在的位置是一件痛苦的事情,因为它们不会与构build工具中的MSBuild.exe具有相同的目录结构。

最后,非常重要的是:如果你使用MSTest.TestFramework并且仍然需要能够在Visual Studio IDE中发现和运行testing,那么你还需要在你的unit testing项目中安装MSTest.TestAdapter

1:虽然VS2017支持并排安装,但它使用一个只logging最近安装的registry项。 因此,如果您最后安装了Test Agent,则密钥将指向其安装目录…但Test Agent不包含MSBuild.exe ,因此依赖此registry项的任何代码都将失败。 为什么微软不能让testing代理成为构build工具的一个可选部分(这样所有的EXE就可以处于相同的目录层次结构中)是任何人的猜测。

以下是我为使构build服务器运行MsTest而不安装VS 2012所采取的步骤:

  1. 在c:\ dev中创build'Mstest'目录文件夹。
  2. 从C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE复制'Mstest.exe'和'Mstest.exe.config'到'Mstest'目录
  3. 将Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll复制到“Mstest”目录
  4. 在“Mstest”文件夹中创build'程序集'目录
  5. 将所有v11 Microsoft.VisualStudio.QualityTools。* .dll从C:\ Windows \ assembly提取到“Mstest / assemblies”目录
  6. 复制所有'v11'Microsoft.VisualStudio.QualityTools。 .dll和Microsoft.VisualStudio.TestTools。 .dll从C:\ Windows \ Microsoft.NET \程序集\ GAC_MSIL到'Mstest /程序集'
  7. 复制所有v11 Microsoft.VisualStudio.QualityTools。 .dll和Microsoft.VisualStudio.TestTools。 .dll从C:\ Program Files文件(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies到'Mstest /程序集'
  8. 将“程序集”添加到“Mstest.exe.config”的“privatePath”属性中
  9. 导出'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 /企业/ QualityTools并将其应用于哈德森框。
  10. 将QTAgent32.exe和QTAgent32.exe.config复制到C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE中的“MsTest”目录
  11. 将“程序集”添加到“QTAgent32.exe.config”中的“privatePath”属性中
  12. 从'C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger'复制msdia110.dll到'MsTest / assemblies'
  13. 注册'msdia110.dll'与c:/windows/syswow64/regsvr32.exe /我'../mstest/assemblies/msdia110.dll'(这扔了一个错误,但由于某种原因,它仍然工作,我跑了一对夫妇次,并在我检查之前尝试了不同的regsvr32.exe版本,但它在registry中)

  14. 添加环境variables“MSTEST_HOME”,并将其设置为“c:\ dev \ mstest \”或您的path。 我在构build脚本中使用了环境variables。

debuggingMsTest执行错误:

添加到“MsTest.exe.config”

 <system.diagnostics> <trace autoflush="true" indentsize="4"> <listeners> <add name="EqtListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\MsTest.log" /> </listeners> </trace> <switches> <add name="EqtTraceLevel" value="Verbose" /> </switches> </system.diagnostics> 

MSTest是为.NET核心用户宣布的 。 该公告以dotnet工具为例。 我还没有mstest如何获得独立的mstest可执行文件。