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


108

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


もう少し詳しく教えてください。どのバージョン?サーバーを構築しますか?etc
リチャードバンクス

回答:


168

Visual Studioがなくてもmstest.exeを実行できます。
以下のVisual Studio ISO用のエージェントの1つをダウンロードし、サーバーにテストエージェントをインストールします。

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よりもはるかに軽量になります。私が正しく覚えている場合は、テストエージェントのみをインストールするために、約500 mbのダウンロードと約300 mbをダウンロードします。

更新

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

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


TestAgentとTestControllerをインストールした後、MsTest.exeはどこに配置されますか?
Evgeny Levin

3
C:\ Program Files \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole

1
Visual Studio 2008のエージェントはありますか?
Tomas Kubes 14

3
Visual Studio 2012 Test Agentsをインストールした後、私のグループで問題が発生しました。レジストリ値の一部が変更され、その結果、同じマシン上にあるVisual Studio 2010のものを混乱させたと考えています。注意してください。
スティーブン

1
2015年のリンクは死んでいます。テストエージェントは、visualstudio.com
downloads /?q

18

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

  • 単体テストプロジェクトのみをビルドする必要がある場合は、パッケージMSTest.TestFrameworkをそれらのプロジェクトにインストールしMicrosoft.VisualStudio.QualityTools.UnitTestFramework、それらから参照を削除します。ここで必要なのは、Visual Studio 2017ビルドツールをインストールし、呼び出しmsbuild.exeビルドを実行することだけです。
  • テストも実行する必要がある場合、事態はより複雑になります。
    • 最も簡単な解決策は、VS2017 Community Edition(msbuildとmstestの両方を含む)をインストールすることですが、これが合法かどうかは不明であり、弁護士ではないので注意してください。
    • (ディスクスペースの面でとはるかに軽く、)法的に安全な解決策は、インストールすることでVisual Studioの2017テストエージェントをし、その後、 Visual Studioの2017年のためのビルドツール正確な順序が極めて重要である1)。これはあなたに与えMSTest.exevstest.console.exeあなたはそれを呼び出すことができます。これらの実行可能ファイルがMSBuild.exeビルドツールと同じディレクトリ構造に存在しないため、これらの実行可能ファイルがどこにあるかを実際に把握するのは簡単ではないことに注意してください。

最後に、そして非常に重要なことですがMSTest.TestFramework、Visual Studio IDE内からテストを使用して実行できるようにする必要がある場合はMSTest.TestAdapter、単体テストプロジェクトにもインストールする必要があります。

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


Test Agentメソッドを使用してインストールしましたが、mstest.exeがまだ失敗しFile extension specified '.webtest' is not a valid test extension.ます。
グレゴリースヴァリアン

これでvswhereが見つかりました -他の質問を参照してください。たとえば、「プログラムでVS2017インストールディレクトリを見つける」や「MSBuild.exeが見つからない、cmd.exe」など、それを使用します。
Wai Ha Lee

@WaiHaLee vswhereは何よりも優れていますが、MS インストールがVSインストールディレクトリに対して相対的にどこにあるのかを想定する必要があります...(いつ?) 。MicrosoftがMSBuild / MSTest / VSTestへのパスを取得するためのプログラム的な方法を作成できない、または作成しない理由(VSのインストールディレクトリは、誰も気にしません)は私を超えています。
Ian Kemp

ええ、それはありますか/ありませんか?私は....彼らは彼らの理由があるんだけど、
ワイハリーは

@Ian Kemp上記のとおり、テストエージェントとビルドツールをインストールしましたが、エラーが発生しますNo test is available in C:\Users\..\Desktop\MyExeName.exe... 。私は開いているSOに質問を。手がかりがあれば、よろしくお願いします。
user1207289

4

多分できると思いますが、間違いなくサポートされていません。

このブログ記事は、Visual StudioがインストールされていなくてもMSTestが機能していると主張する人によって書かれています。


MSが実装を変更することを決定した場合、環境が不安定になり、Windowsの更新ごとに予期しないことが発生する可能性がある場合、ハッキングという単語が含まれるURLには、実際に労力の価値を問う必要があります(定期的な更新を維持していますか?)。
ラッセル

この場合、Windowsの更新によってハッキングが破られる可能性は低いと思われます。ただし、mstestの新しいバージョン(たとえば、VSの新しいバージョンまたはサービスパック内)は、動作が異なる場合があります。
Doc Brown、

@ラッセル-個人的には、追加のVSライセンスを取得するか、代わりにNUnitを使用します。
ジャスティン

すべての返信に感謝します。追加のVSライセンスを取得します。
yang-qu

1
上記のブログ投稿の作成者として、私はそれが機能し、壊れることはほとんどないことを証明できます。少なくともVS2008では。VS2010については、これを見ていません。MSTestがVSに深く統合されていることはテストキットの大きな弱点ですが、MSがチームシステムの使用を奨励するため、MSが修正することはないと思います。
foxxtrot 2010

4

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

VSをインストールせずにビルドとMSTestを動作させるには、依存関係が多すぎます。これは、間違いなくサポートされていません。

ビルドを開始する人がライセンスを持っている限り、ビルドサーバーにライセンスは必要ありません。これは2005年の暗黒の時代から当てはまり、エディションの平等がある限り問題ありません。

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


参考までに、このブログ
Maslow

2

Visual Studio 2017 IDEをインストールせずに、サーバーでこれを動作させました。私の要件は

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

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

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. Visual StudioユニットテストDLLを含むNugetパッケージ -これはここで見つけることができます

ステップ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

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をコピーします。.dllおよびMicrosoft.VisualStudio.TestTools。C:\ Windows \ Microsoft.NET \ assembly \ GAC_MSILから「Mstest / assemblies」への.dll
  7. すべてのv11 Microsoft.VisualStudio.QualityToolsをコピーします。.dllおよびMicrosoft.VisualStudio.TestTools。C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssembliesから.dllを「Mstest / assemblies」に
  8. 「Mstest.exe.config」の「privatePath」属性に「assemblies」を追加します
  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」属性に「Assemblies」を追加します
  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に登録します。時間を確認し、確認する前に別のバージョンの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>

0

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"

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.