Answers:
可以在没有Visual Studio的情况下运行mstest.exe。
下载以下Visual Studio ISO 代理之一,然后在服务器上安装测试代理:
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左右只能安装测试代理。
更新
对于VS 2017之前的版本,请查看此处:
该答案专门与Visual Studio 2017有关,答案是yes。但是请注意,Microsoft(仍)不提供任何形式的官方API来查找相关的可执行文件(MSBuild.exe
和MSTest.exe
),因此您将无法读取注册表项和/或探查各种目录来查找这些文件。您已被警告。
MSTest.TestFramework
到这些项目中,并Microsoft.VisualStudio.QualityTools.UnitTestFramework
从中删除引用。现在您所需要做的就是安装Visual Studio 2017生成工具并调用msbuild.exe
以执行生成。MSTest.exe
,vstest.console.exe
然后可以调出。请注意,实际上弄清楚这些可执行文件的位置很麻烦,因为它们与MSBuild.exe
Build Tools 不在同一个目录结构中。最后,也是非常重要的一点:如果确实要使用MSTest.TestFramework
并且仍然需要能够在Visual Studio IDE中发现和运行测试,则还需要MSTest.TestAdapter
安装在单元测试项目中。
1:虽然VS2017支持并行安装,但它使用单个注册表项,该注册表项仅记录最新的安装。因此,如果最后安装Test Agent,则该密钥将指向其安装目录...,但Test Agent不包括MSBuild.exe
,因此任何依赖于此注册表项来确定可执行文件路径的代码都将失败。为何有人无法将测试代理作为构建工具的可选部分(以使所有EXE都生活在同一目录层次结构中)的原因是为什么?
File extension specified '.webtest' is not a valid test extension.
对于我仍然失败。
vswhere
总比没有强,但是您仍然必须对MSBuild相对于VS安装目录的位置进行假设...如果(何时?)Microsoft决定重新定位这些可执行文件中的任何一个,则该假设不再有效。为什么Microsoft无法或不会创建一种编程方式来获取通往MSBuild / MSTest / VSTest的路径(与VS安装目录相对,没人真正在乎的)与我无关。
No test is available in C:\Users\..\Desktop\MyExeName.exe...
。我对SO提出了一个问题。如果您有任何线索,我们将不胜感激。
我认为您可能可以,但绝对不支持。
我发现此博客文章由声称在未安装Visual Studio的情况下可以运行MSTest的人撰写。
@crocpulsar,您需要在构建服务器上安装Visual Studio,但不需要购买额外的许可证。
在没有安装VS的情况下,有太多依赖关系可以使build&MSTest正常工作,并且绝对不支持它。
只要开始构建的人有许可证,就不需要构建服务器。从2005年的黑暗时期开始就是这种情况,只要有版本奇偶校验就可以了。
如果您团队中的每个人都有Ultimate,那么您可以自由地将其安装在构建服务器上。但是如果您的团队成员之一具有Premium,那么理想情况下,您应该在构建服务器上安装Premium。这还可以实现许多其他功能,例如代码覆盖率,测试影响分析和体系结构验证。
我只是在不安装Visual Studio 2017 IDE的情况下在服务器上使用此功能。我的要求是
我不得不将其他答案中提到的一些事情组合在一起,然后在这里又做了另一件事。
VS2017:
步骤3是解决以下问题:
“无法解析此引用。无法找到程序集“ Microsoft.VisualStudio.QualityTools.UnitTestFramework””
然后导致:
“错误CS0234:类型或名称空间名称'VisualStudio'在名称空间'Microsoft'中不存在(您是否缺少程序集引用?)“
我不必向该项目添加任何引用。但是,vstest.console.exe的路径包含在TestAgent文件夹中(对我而言,它是“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow” )
这是我为使构建服务器在不安装VS 2012的情况下运行MsTest所采取的步骤:
在c:/windows/syswow64/regsvr32.exe / i'../mstest/assemblies/msdia110.dll'中注册“ msdia110.dll”(这引发了错误,但由于某些原因它仍然有效。我运行了几次次,并在我检查之前尝试了不同的regsvr32.exe版本,但是它在注册表中)
添加环境变量“ MSTEST_HOME”,并将其设置为“ c:\ dev \ mstest \”或您的路径。我在构建脚本中使用了环境变量。
调试MsTest执行错误:
添加到'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.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"
宣布针对.NET Core用户的MSTest 。公告带有该dotnet
工具的用法示例。我还没有弄清楚如何获得独立的mstest
可执行文件。