web-dev-qa-db-ja.com

Visual Studioをインストールせずにmstest.exeを使用できますか?

Mstest.exeを使用してビルドサーバーでユニットテストを実行したいのですが、ビルドサーバーにVisual Studioをインストールしたくありません。 Visual StudioなしでMSTestをインストールできますか?

101
yang-qu

Visual Studioなしでmstest.exeを実行することは可能です。
以下のいずれかのVisual Studio ISOのエージェントをダウンロードし、サーバーにTest Agentをインストールします。

Visual Studio 2017 (127MBのディスク容量、ダウンロード用よりも小さい)
Visual Studio 2015 (128MBのセットアップ、2GBのディスク容量が必要)
Visual Studio 2012 (224MB)
Visual Studio 201 (287MB)
Visual Studio 201 (515MB)

これにより、コマンドラインからmstest.exeを実行するために必要なすべてがインストールされ、Visual Studioよりもはるかに軽量になります。正しく覚えていれば、テストエージェントのみをインストールするために、約500 MBのダウンロードと約300 MBのダウンロードが必要です。

[〜#〜] update [〜#〜]

VS 2017より古いバージョンについては、こちらをご覧ください:

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

161
Bela

この回答は特にVisual Studio 2017に関係し、回答はyesです。ただし、Microsoftは(まだ)関連する実行可能ファイル(MSBuild.exeおよびMSTest.exe)を見つけるための公式APIを提供していないことに注意してください。したがって、 youこれらのファイルを見つけるために、レジストリキーの読み取りやさまざまなディレクトリの調査を行っています 。あなたは警告されました。

  • build単体テストプロジェクトだけが必要な場合は、パッケージ MSTest.TestFramework をそれらのプロジェクトにインストールし、それらからMicrosoft.VisualStudio.QualityTools.UnitTestFrameworkへの参照を削除します。ここで必要なのは、 Visual Studio 2017 Build Tools をインストールし、msbuild.exeを呼び出してビルドを実行することです。
  • runテストも必要な場合、物事はより複雑になります:
    • 最も簡単な解決策は、VS2017 Community Edition(msbuildとmstestの両方を含む)をインストールすることです-しかし、私はこれの合法性について確信が持てず、弁護士ではないので、注意してください!
    • 法的に安全なソリューション(およびディスクスペースの点ではるかに軽い)は、 Visual Studio 2017 Test Agent およびthenVisual Studio 2017のビルドツール正確な順序が重要です1);これにより、MSTest.exevstest.console.exeが得られ、それらを呼び出すことができます。これらの実行可能ファイルがビルドツールのMSBuild.exeと同じディレクトリ構造に存在しないため、実際にこれらの実行可能ファイルの場所を把握するのは面倒です。

最後に、非常に重要なこと:MSTest.TestFrameworkを使用しても、Visual Studio IDE内からテストを検出および実行できる必要がある場合は、 MSTest.TestAdapter ユニットテストプロジェクトにインストールされています。

1:VS2017はサイドバイサイドインストールをサポートしますが、最新のインストールのみを記録する単一のレジストリキーを使用します。したがって、Test Agentを最後にインストールすると、キーはインストールディレクトリを指しますが、Test AgentにはMSBuild.exeが含まれないため、このレジストリキーに依存してその実行可能ファイルのパスを把握するコードは、失敗します。 Microsoftが(すべてのEXEが同じディレクトリ階層に存在するように)テストエージェントをビルドツールのオプション部分にできなかった理由は誰でも推測できます。

13
Ian Kemp

おそらくできると思いますが、サポートされていません。

Visual StudioがインストールされていなくてもMSTestが動作していると主張する人によって書かれたこのブログ記事を見つけました。

4
Justin

@crocpulsar、ビルドサーバーにVisual Studioをインストールする必要がありますただし、追加のライセンスを購入する必要はありません

VSをインストールせずにビルドとMSTestを動作させるには、あまりにも多くの依存関係があり、ほとんどの場合サポートされていません。

ビルドを開始する人にライセンスがある限り、ビルドサーバーにライセンスは必要ありません。これは2005年の暗黒時代からのことで、エディションパリティがあれば問題ありません。

チームの全員がUltimateを持っている場合、ビルドサーバーに自由にインストールできます。ただし、チームメンバーの1人がプレミアムを持っている場合は、ビルドサーバーにプレミアムをインストールするのが理想的です。これにより、コードカバレッジ、テスト影響分析、アーキテクチャ検証など、他の多くの機能も有効になります。

Visual Studio 2017 IDEをインストールせずに、サーバーでこれが機能するようになりました。私の要件は

  • プロジェクトを構築する
  • テストプロジェクトをビルドする
  • VSTestを使用してテストを実行します(MSTestの同様のプロセスだと思います)

私は他の回答に記載されているいくつかのことと、さらに別の回答 here の組み合わせを行わなければなりませんでした。

VS2017:

  1. BuildTools -これは Microsoftダウンロードページ にあり、「Tools for Visual Studio 2017」->「Build Tools for Visual Studio 2017」までスクロールダウンできます。
  2. TestAgent -これは Microsoftダウンロードページ にあり、「Tools for Visual Studio 2017」->「Agents for Visual Studio 2017」までスクロールダウンできます。
  3. Nugetパッケージ Visual Studioユニットテストdllを含める-これは見つけることができます here

ステップ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」でした) )

1
Andy

VS 2012をインストールせずにビルドサーバーでMsTestを実行するために行った手順は次のとおりです。

  1. C:\ devに「Mstest」ディレクトリフォルダーを作成しました。
  2. 「Mstest.exe」および「Mstest.exe.config」をC:\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\IDEから「Mstest」ディレクトリにコピーしました
  3. Microsoft.VisualStudio.QualityTools.UnitTestFramework.dllを「Mstest」ディレクトリにコピーします
  4. 「Mstest」フォルダに「assemblies」ディレクトリを作成しました
  5. すべてのv11 Microsoft.VisualStudio.QualityTools。*。dllをC:\ Windows\Assemblyから「Mstest/assemblies」ディレクトリに抽出しました
  6. すべての 'v11' Microsoft.VisualStudio.QualityTools .。dllsおよびMicrosoft.VisualStudio.TestTools。。dllsをC:\ Windows\Microsoft.NET\Assembly\GAC_MSILから 'Mstest/assemblies'にコピーします
  7. すべてのv11 Microsoft.VisualStudio.QualityTools .。dllsおよびMicrosoft.VisualStudio.TestTools。。dllをC:\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssembliesから 'Mstestにコピーします/ assemblies '
  8. 「Mstest.exe.config」の「privatePath」属性に「アセンブリ」を追加します
  9. 'HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/VisualStudio/11.0/Enterprise/QualityToolsをエクスポートし、hudsonボックスに適用します。
  10. QTAgent32.exeとQTAgent32.exe.configをC:\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\IDEから「MsTest」ディレクトリにコピーします
  11. 「QTAgent32.exe.config」の「privatePath」属性に「アセンブリ」を追加します
  12. 「msdia110.dll」を「C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\Packages\Debugger」から「MsTest/assemblies」にコピーします
  13. 'msdia110.dll'をc:/windows/syswow64/regsvr32.exe/i '../mstest/assemblies/msdia110.dll'に登録します(これによりエラーがスローされましたが、何らかの理由で機能しました。何度も試し、チェックする前に異なるregsvr32.exeバージョンを試しましたが、レジストリにあります)

  14. 環境変数「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>
1
Dai Le

MSTestは 。NET Coreで発表 ユーザーでした。発表には、dotnetツールを使用した使用例があります。スタンドアロンのmstest実行可能ファイルを取得する方法を考えていません。

0
user7610

Mstest.exe webtestツールを実行する必要がある場合は、Visual Studio Enterprise試用版をインストールし、追加の必要なしにテストが実行されるアカウントで少なくとも1回(開始するだけで)実行するようにしてください。システムアカウントでテストを実行する場合、以下のようなものを使用する必要があります

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