从C:\ Windows \ assembly中提取所有v11 Microsoft.VisualStudio.QualityTools . * . dll到'Mstest/assemblies'目录
将所有'v11' Microsoft.VisualStudio.QualityTools..dlls和Microsoft.VisualStudio.TestTools..dll从C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL复制到'Mstest/assemblies'
复制所有v11 Microsoft.VisualStudio.QualityTools..dlls和Microsoft.VisualStudio.TestTools..dll从C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies到'Mstest/assemblies'
如果您需要运行mstest.exe webtest工具,那么您可以安装Visual Studio Enterprise试用版,并确保在帐户下运行至少一次(只是启动它),在该帐户下将运行测试,不需要执行任何其他操作 . 因此,如果您的测试在系统帐户下运行,那么您需要使用类似下面的内容
PS C:\agent> psexec -s cmd.exe
C:\Windows\system32>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\mstest.exe"
Microsoft (R) Test Execution Command Line Tool Version 15.0.27520.0
Copyright (c) Microsoft Corporation. All rights reserved.
Please specify tests to run, or specify the /publish switch to publish results.
For switch syntax, type "MSTest /help"
我没有必要添加任何对项目的引用 . 但是,vstest.console.exe的路径包含在TestAgent文件夹中(对我来说,它是“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow” )
8 回答
没有visual studio就可以运行mstest.exe .
下载Visual Studio ISO下面的Agent之一,并在服务器上安装 Test Agent :
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重量轻得多 . 如果我没记错的话,大约500mb下载和大约300mb安装测试代理 .
UPDATE
对于早于VS 2017的版本,请在此处查看:
https://www.visualstudio.com/vs/older-downloads/
这个答案特别适用于Visual Studio 2017,答案是 yes . 但请注意,Microsoft(仍然)不提供任何类型的官方API来查找相关的可执行文件(
MSBuild.exe
和MSTest.exe
),所以you are stuck reading registry keys and/or probing various directories to locate these files . 你被警告过了 .如果您只需要构建单元测试项目,请将包MSTest.TestFramework安装到这些项目中,并从中删除对
Microsoft.VisualStudio.QualityTools.UnitTestFramework
的引用 . 现在您只需要安装Visual Studio 2017 Build Tools并调用msbuild.exe
来执行构建 .如果您还需要运行测试,事情会变得更加棘手:
最简单的解决方案是安装VS2017 Community Edition(包括msbuild和mstest) - but I am unsure of the legality of this, and am not a lawyer, so be careful!
一个法律上更安全的解决方案(在磁盘空间方面要轻得多)是安装Visual Studio 2017 Test Agent然后Build Tools for Visual Studio 2017( exact order is vital 1);这会给你
MSTest.exe
和vstest.console.exe
然后你可以呼叫 . 请注意,实际确定这些可执行文件所在的位置是一件痛苦的事,因为它们不会与构建工具中的MSBuild.exe
存在于同一目录结构中 .最后,非常重要的是:如果您确实使用了
MSTest.TestFramework
并且仍然需要能够从Visual Studio IDE中发现并运行测试,那么您还需要在单元测试项目中安装MSTest.TestAdapter .1:虽然VS2017支持并行安装,但它使用仅记录最新安装的单个注册表项 . 因此,如果您最后安装测试代理,该密钥将指向其安装目录...但测试代理不包含MSBuild.exe,因此任何依赖此注册表项来找出该可执行文件路径的代码都将失败 . 为什么Microsoft无法让测试代理成为构建工具的可选部分(以便所有EXE都位于同一目录层次结构中)是任何人的猜测 .
我想你可能会,但它肯定不受支持 .
我发现这篇博客文章是由一个声称MSTest在没有安装Visual Studio的情况下工作的人写的 .
@crocpulsar,您需要在构建服务器上安装Visual Studio, but you do NOT need to buy an additional licence .
在没有安装VS的情况下,有太多的依赖性来使构建和MSTest工作,并且最明确地不支持它 .
只要启动构建的人拥有许可证,您就不需要构建服务器 . 自从2005年的黑暗日子以来就是如此,只要有版本平价,那么你就可以了 .
如果您团队中的每个人都拥有Ultimate,那么您可以自由地将其安装在构建服务器上;但如果您的某个团队成员有Premium,那么理想情况下应该在构建服务器上安装Premium . 这还可以实现许多其他位,如代码覆盖率,测试影响分析和架构验证等 .
以下是我在不安装VS 2012的情况下使构建服务器运行MsTest所采取的步骤:
在c:\ dev中创建了'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'文件夹中创建了'assemblies'目录
从C:\ Windows \ assembly中提取所有v11 Microsoft.VisualStudio.QualityTools . * . dll到'Mstest/assemblies'目录
将所有'v11' Microsoft.VisualStudio.QualityTools..dlls和Microsoft.VisualStudio.TestTools..dll从C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL复制到'Mstest/assemblies'
复制所有v11 Microsoft.VisualStudio.QualityTools..dlls和Microsoft.VisualStudio.TestTools..dll从C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies到'Mstest/assemblies'
将'assemblies'添加到'Mstest.exe.config'的'privatePath'属性
导出'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools并将其应用于哈德森框 .
将QTAgent32.exe和QTAgent32.exe.config从C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE复制到'MsTest'目录
将'assemblies'添加到'QTAgent32.exe.config'的'privatePath'属性
将'msdia110.dll'从'C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Packages\Debugger'复制到'MsTest/assemblies'
用c:/windows/syswow64/regsvr32.exe / i'../mstest/assemblies/msdia110.dll'注册'msdia110.dll'(这引发了一个错误,但由于某种原因它仍然有效 . 我跑了一个几次,并在我检查之前尝试了不同的regsvr32.exe版本,但它在注册表中有)
添加环境变量'MSTEST_HOME'并将其设置为'c:\ dev \ mstest '或路径 . 我在构建脚本中使用了环境变量 .
调试MsTest执行错误:
添加到'MsTest.exe.config'
MSTest是announced for .NET Core用户 . 该公告包含
dotnet
工具的使用示例 . 我还没弄想自己如何获得独立的mstest
可执行文件 .如果您需要运行mstest.exe webtest工具,那么您可以安装Visual Studio Enterprise试用版,并确保在帐户下运行至少一次(只是启动它),在该帐户下将运行测试,不需要执行任何其他操作 . 因此,如果您的测试在系统帐户下运行,那么您需要使用类似下面的内容
我刚刚在我的服务器上工作,而没有安装Visual Studio 2017 IDE . 我的要求是
Build 项目
构建测试项目
使用VSTest运行测试(我相信这是MSTest的类似过程)
我不得不做其他答案中陈述的一些事情的组合,然后另外一个here .
VS2017:
BuildTools - 可以在Microsoft downloads page找到,然后向下滚动到"Tools for Visual Studio 2017" - > "Build Tools for Visual Studio 2017"
TestAgent - 可以在Microsoft downloads page上找到,然后向下滚动到"Tools for Visual Studio 2017" - > "Agents for Visual Studio 2017"
Nuget Package包括visual studio单元测试dll - 这可以找到here
Step 3 was to fix the following issue:
“无法解析此引用 . 无法找到程序集”Microsoft.VisualStudio.QualityTools.UnitTestFramework“”
然后导致:
“错误CS0234:名称空间'Microsoft'中不存在类型或命名空间名称'VisualStudio'(您是否缺少程序集引用?)”
我没有必要添加任何对项目的引用 . 但是,vstest.console.exe的路径包含在TestAgent文件夹中(对我来说,它是“C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow” )