首页 文章

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

提问于
浏览
94

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

8 回答

  • 4

    没有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/

  • 1

    这个答案特别适用于Visual Studio 2017,答案是 yes . 但请注意,Microsoft(仍然)不提供任何类型的官方API来查找相关的可执行文件( MSBuild.exeMSTest.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 2017exact order is vital 1);这会给你 MSTest.exevstest.console.exe 然后你可以呼叫 . 请注意,实际确定这些可执行文件所在的位置是一件痛苦的事,因为它们不会与构建工具中的 MSBuild.exe 存在于同一目录结构中 .

    最后,非常重要的是:如果您确实使用了 MSTest.TestFramework 并且仍然需要能够从Visual Studio IDE中发现并运行测试,那么您还需要在单元测试项目中安装MSTest.TestAdapter .

    1:虽然VS2017支持并行安装,但它使用仅记录最新安装的单个注册表项 . 因此,如果您最后安装测试代理,该密钥将指向其安装目录...但测试代理不包含MSBuild.exe,因此任何依赖此注册表项来找出该可执行文件路径的代码都将失败 . 为什么Microsoft无法让测试代理成为构建工具的可选部分(以便所有EXE都位于同一目录层次结构中)是任何人的猜测 .

  • 0

    我想你可能会,但它肯定不受支持 .

    我发现这篇博客文章是由一个声称MSTest在没有安装Visual Studio的情况下工作的人写的 .

  • 4

    @crocpulsar,您需要在构建服务器上安装Visual Studio, but you do NOT need to buy an additional licence .

    在没有安装VS的情况下,有太多的依赖性来使构建和MSTest工作,并且最明确地不支持它 .

    只要启动构建的人拥有许可证,您就不需要构建服务器 . 自从2005年的黑暗日子以来就是如此,只要有版本平价,那么你就可以了 .

    如果您团队中的每个人都拥有Ultimate,那么您可以自由地将其安装在构建服务器上;但如果您的某个团队成员有Premium,那么理想情况下应该在构建服务器上安装Premium . 这还可以实现许多其他位,如代码覆盖率,测试影响分析和架构验证等 .

  • 153

    以下是我在不安装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'

    <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>
    
  • 10

    MSTest是announced for .NET Core用户 . 该公告包含 dotnet 工具的使用示例 . 我还没弄想自己如何获得独立的 mstest 可执行文件 .

  • 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"
    
  • 0

    我刚刚在我的服务器上工作,而没有安装Visual Studio 2017 IDE . 我的要求是

    • Build 项目

    • 构建测试项目

    • 使用VSTest运行测试(我相信这是MSTest的类似过程)

    我不得不做其他答案中陈述的一些事情的组合,然后另外一个here .

    VS2017:

    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” )

相关问题