Mstest.exeを使用してビルドサーバーでユニットテストを実行したいのですが、ビルドサーバーにVisual Studioをインストールしたくありません。 Visual StudioなしでMSTestをインストールできますか?
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より古いバージョンについては、こちらをご覧ください:
この回答は特にVisual Studio 2017に関係し、回答はyesです。ただし、Microsoftは(まだ)関連する実行可能ファイル(MSBuild.exe
およびMSTest.exe
)を見つけるための公式APIを提供していないことに注意してください。したがって、 youこれらのファイルを見つけるために、レジストリキーの読み取りやさまざまなディレクトリの調査を行っています 。あなたは警告されました。
MSTest.TestFramework
をそれらのプロジェクトにインストールし、それらからMicrosoft.VisualStudio.QualityTools.UnitTestFramework
への参照を削除します。ここで必要なのは、 Visual Studio 2017 Build Tools をインストールし、msbuild.exe
を呼び出してビルドを実行することです。MSTest.exe
とvstest.console.exe
が得られ、それらを呼び出すことができます。これらの実行可能ファイルがビルドツールのMSBuild.exe
と同じディレクトリ構造に存在しないため、実際にこれらの実行可能ファイルの場所を把握するのは面倒です。最後に、非常に重要なこと:MSTest.TestFramework
を使用しても、Visual Studio IDE内からテストを検出および実行できる必要がある場合は、 MSTest.TestAdapter
ユニットテストプロジェクトにインストールされています。
1:VS2017はサイドバイサイドインストールをサポートしますが、最新のインストールのみを記録する単一のレジストリキーを使用します。したがって、Test Agentを最後にインストールすると、キーはインストールディレクトリを指しますが、Test AgentにはMSBuild.exe
が含まれないため、このレジストリキーに依存してその実行可能ファイルのパスを把握するコードは、失敗します。 Microsoftが(すべてのEXEが同じディレクトリ階層に存在するように)テストエージェントをビルドツールのオプション部分にできなかった理由は誰でも推測できます。
おそらくできると思いますが、サポートされていません。
Visual StudioがインストールされていなくてもMSTestが動作していると主張する人によって書かれたこのブログ記事を見つけました。
@crocpulsar、ビルドサーバーにVisual Studioをインストールする必要がありますただし、追加のライセンスを購入する必要はありません。
VSをインストールせずにビルドとMSTestを動作させるには、あまりにも多くの依存関係があり、ほとんどの場合サポートされていません。
ビルドを開始する人にライセンスがある限り、ビルドサーバーにライセンスは必要ありません。これは2005年の暗黒時代からのことで、エディションパリティがあれば問題ありません。
チームの全員がUltimateを持っている場合、ビルドサーバーに自由にインストールできます。ただし、チームメンバーの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」でした) )
VS 2012をインストールせずにビルドサーバーでMsTestを実行するために行った手順は次のとおりです。
'msdia110.dll'をc:/windows/syswow64/regsvr32.exe/i '../mstest/assemblies/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>
MSTestは 。NET Coreで発表 ユーザーでした。発表には、dotnet
ツールを使用した使用例があります。スタンドアロンのmstest
実行可能ファイルを取得する方法を考えていません。
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"