我想使用mstest.exe在构建服务器上运行我的单元测试,但我不想在构建服务器上安装Visual Studio。我可以在没有Visual Studio的情况下安装MSTest吗?
答案 0 :(得分:160)
可以在没有visual studio的情况下运行mstest.exe 下载以下Visual Studio ISO代理之一,并在服务器上安装 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就可以安装测试代理。
<强>更新强>
对于VS 2017以前的版本,请点击此处:
答案 1 :(得分:12)
这个答案特别适用于Visual Studio 2017,答案是是。但请注意,Microsoft(仍然)不提供用于查找相关可执行文件(MSBuild.exe
和MSTest.exe
)的任何类型的官方API,因此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
来执行构建。MSTest.exe
和vstest.console.exe
,然后您可以呼叫。请注意,实际确定这些可执行文件所在的位置很麻烦,因为它们不会与Build Tools中的MSBuild.exe
存在于同一目录结构中。最后,非常重要的是:如果您使用MSTest.TestFramework
并且仍然需要能够在Visual Studio IDE中发现并运行测试,那么您还需要在您的单元中安装MSTest.TestAdapter
测试项目。
1:虽然VS2017支持并行安装,但它使用仅记录最新安装的单个注册表项。因此,如果您最后安装测试代理,该密钥将指向其安装目录...但测试代理不包含MSBuild.exe
,因此任何依赖此注册表项来确定可执行文件路径的代码都将失败。为什么Microsoft无法让测试代理成为构建工具的可选部分(以便所有EXE都位于同一目录层次结构中)是任何人的猜测。
答案 2 :(得分:4)
我想你可能会,但它肯定不受支持。
我发现这篇博客文章是由声称在没有安装Visual Studio的情况下使用MSTest的人撰写的。
答案 3 :(得分:4)
@crocpulsar,您需要在构建服务器上安装Visual Studio ,但不需要购买额外的许可。
有太多的依赖性来构建和建立&amp; MSTest在没有安装VS的情况下工作,最明确不支持。
只要启动构建的人拥有许可证,您就不需要构建服务器。自从2005年的黑暗日子以来就是如此,只要有版本平价,那么你就可以了。
如果您团队中的每个人都拥有Ultimate,那么您可以自由地在构建服务器上安装它;但如果您的某个团队成员有Premium,那么理想情况下应该在构建服务器上安装Premium。这还可以实现许多其他功能,如代码覆盖率,测试影响分析和架构验证等。
答案 4 :(得分:1)
以下是让我的构建服务器在不安装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>
答案 5 :(得分:1)
我只是在服务器上工作而不安装Visual Studio 2017 IDE。我的要求是
我必须将其他答案中提到的几件事结合起来,然后再做另外一个here。
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” )
答案 6 :(得分:0)
MSTest是announced for .NET Core个用户。该公告包含dotnet
工具的使用示例。我还没想出如何获得独立的mstest
可执行文件。
答案 7 :(得分:0)
如果您需要运行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"