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