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

时间:2010-08-04 05:40:57

标签: visual-studio mstest build-server

我想使用mstest.exe在构建服务器上运行我的单元测试,但我不想在构建服务器上安装Visual Studio。我可以在没有Visual Studio的情况下安装MSTest吗?

8 个答案:

答案 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以前的版本,请点击此处:

https://www.visualstudio.com/vs/older-downloads/

答案 1 :(得分:12)

这个答案特别适用于Visual Studio 2017,答案是。但请注意,Microsoft(仍然)不提供用于查找相关可执行文件(MSBuild.exeMSTest.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来执行构建。
  • 如果您还需要运行您的测试,事情变得更加棘手:
    • 最简单的解决方案是安装VS2017社区版(包括msbuild和mstest) - 但我不确定这是否合法,我不是律师,所以要小心!
    • 一个法律上更安全的解决方案(在磁盘空间方面要轻得多)是安装Visual Studio 2017 Test Agent然后 Build Tools for Visual Studio 2017确切的顺序至关重要< /强> 1 );这将为您提供MSTest.exevstest.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所采取的步骤:

  1. 在c:\ dev。
  2. 中创建了“Mstest”目录文件夹
  3. 将“Mstest.exe”和“Mstest.exe.config”从C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE复制到“Mstest”目录
  4. 将Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll复制到'Mstest'目录
  5. 在'Mstest'文件夹中创建'assemblies'目录
  6. 从C:\ Windows \ assembly中提取所有v11 Microsoft.VisualStudio.QualityTools。*。dll到'Mstest / assemblies'目录
  7. 将所有'v11'Microsoft.VisualStudio.QualityTools。 .dlls和Microsoft.VisualStudio.TestTools。 .dll从C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSIL复制到'Mstest / assemblies “
  8. 从C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies复制所有v11 Microsoft.VisualStudio.QualityTools。 .dlls和Microsoft.VisualStudio.TestTools。 .dll 'Mstest / assemblies'
  9. 将“程序集”添加到“Mstest.exe.config”
  10. 的“privatePath”属性中
  11. 导出'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools并将其应用于哈德森框。
  12. 将QTAgent32.exe和QTAgent32.exe.config从C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  13. 复制到“MsTest”目录
  14. 将“程序集”添加到“QTAgent32.exe.config”
  15. 的“privatePath”属性中
  16. 从'C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger'复制'msdia110.dll'到'MsTest / assemblies'
  17. 使用c:/windows/syswow64/regsvr32.exe / i'../mstest/assemblies/msdia110.dll'注册'msdia110.dll'(这引发了错误,但由于某种原因,它仍然有效我运行了几次并在我检查之前尝试了不同的regsvr32.exe版本,但它在注册表中就已经存在了)

  18. 添加环境变量'MSTEST_HOME'并将其设置为'c:\ dev \ mstest \'或路径。我在构建脚本中使用了环境变量。

  19. 调试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。我的要求是

  • 构建项目
  • 建立测试项目
  • 使用VSTest运行测试(我相信这与MSTest类似)

我必须将其他答案中提到的几件事结合起来,然后再做另外一个here

VS2017:

  1. BuildTools-可以在Microsoft downloads page上找到,然后向下滚动到“ Visual Studio 2017工具”->“ Visual Studio 2017构建工具”
  2. TestAgent-可以在Microsoft downloads page上找到,然后向下滚动到“ Visual Studio 2017工具”->“ Visual Studio 2017代理”
  3. Nuget Package包含Visual Studio单元测试dll-可以在here
  4. 中找到

步骤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"