web-dev-qa-db-ja.com

MSテストプロジェクトの作業ディレクトリを設定する方法

通常のアプリケーションプロジェクトの場合と同様に、MS Testsプロジェクトの作業ディレクトリを設定するにはどうすればよいですか?テストされる私のコンポーネントは、他のアプリケーションでも使用されているいくつかの構成ファイルにアクセスする必要があります。これまでのところ、これらのファイルは作業ディレクトリにあると想定されているため、テストプロジェクトのbin/debugフォルダーにこれらのファイルをコピーする必要があります。

テストプロジェクトの作業ディレクトリを設定することは可能ですか?

14
Thomas

Visual Studio 2012を使用している場合、テストプロジェクトの出力ディレクトリを[プロパティ] | [ビルド] | [出力パス]に設定すると、Visual Studioからテストを実行するときに作業ディレクトリになります(Vstest.console.exeを使用しているため)。 。テストdllなどを他のファイルと同じディレクトリに出力したくない場合や、他のファイルをテストプロジェクトのコンテンツとして使用したくない場合(Schaliasosの提案による)、次のように設定できます。 [AssemblyInitialize]属性を持つメソッドの起動時のパス。これを行うには、通常どおりSystem.Environment.CurrentDirectoryを割り当てます。作業ディレクトリを設定として使用するか、構成ファイルから読み取ることをお勧めします。

編集

Rohit.Netが指摘しているように、Run All Testsを選択すると、デフォルトのパスはTestResultsの下になります。 runsettingsファイルを使用する場合も同様です。 DeploymentItemsを使用していない場合、出力フォルダーがデフォルトの作業ディレクトリになります。

  • Visual Studioでテストを右クリックして、実行/デバッグを選択するか、または
  • Vstest.console.exeを使用してコマンドラインから実行します。
4
acarlon

テストプロジェクトの作業ディレクトリは、テストの実行を開始したときに作成されます。

それらをローカルで実行する場合、これはプロジェクトフォルダー内のフォルダーTestResultsに作成されます。それらをリモートマシンで実行すると、次のパスの各テストエージェントに異なるフォルダーが作成されます。

C:\ Users {userRunsTheTest}\AppData\Local\VSEQT\QTAgent\{GuidForThisRun}

ファイルをこれらのフォルダーに展開してアクセスできるようにするには、次のことを行う必要があります。

  1. をセットする Copy to Output Directory = Copy Always
  2. これらのファイルを必要とするテストでは、それらを DeploymentItems として設定します。
2
chaliasos

Visual Studio2012のテストエクスプローラーからRun All testsを選択すると、Acarlonの提案は機能しません。

取得するデフォルトのパスは、...\TestResults\Deploy_<YourName>2014-01-13 14_48_20\Outフォルダーのようなものです。

このため、エンティティがエンティティ関連のテストを実行するために接続を開こうとすると、DBにアクセスできない可能性があります。

私の場合、リソースファイルとして設定され、常にコンパイルされてBin/Debug/ResourceフォルダーにドロップされるSQLCEを使用しています。

1
Rohit.Net