この投稿.testsettings
は、ファイルに手動でアイテムを追加することなく、何をする必要があるかを理解するのに役立ちました.
ステップ 1 - MS TestDeploymentItem
属性を有効にします。
DeploymentItem
まず、属性をオン/有効にする必要があります。
TEST -> EDIT TEST SETTINGS -> Current Active settingsに移動します..例: :: Local (local.testsettings)

次に、 DEPLOYMENTに移動し、[ Enable Deployment ] がオンになっていることを確認します。(デフォルトではオフになっています)。

ステップ 2 - ファイルのプロパティを確認する
次に、単体テストで使用するファイルが、コンパイル時に BIN ディレクトリにコピーされるように設定されていることを確認する必要があります。MS Test 単体テストでは、BIN ディレクトリにあるファイルのみを使用できます。なんで?MS テストが実行されるたびに、ソースのコピーを作成する必要があるため、これは現在の BIN ディレクトリ ファイル (現在の構成用) のコピーを作成することを意味します。
たとえば... 現在の構成はデバッグです(リリースではなく)。

次に、ファイルを追加します... (プロジェクトのフォルダー構造に注意してください)...

そして、プロジェクトのコンパイル時に、このファイルが常に bin ディレクトリにコピーされていることを確認してください。

プロからのヒント: [常にコピー] も機能しますが、常にソース ファイルをコピー先ファイルにコピーします。これが、新しい場合はコピーを好む理由です...しかし、あなたのボートに浮かぶものは何でも
紳士淑女の皆さん、まだ私と一緒ですか?ウィキド。
コンパイルすると、ファイルは Bin ディレクトリに存在するはずです....

ステップ 3 - DeploymentItem 属性を使用する
OK、これでようやくDeploymentItem
コードで属性を使用できるようになりました。これを行うと、MSTest に (bin ディレクトリに関連する場所から) ファイルを新しい MS Test ディレクトリにコピーするように指示されます...
[TestMethod]
[DeploymentItem(@"Test Data\100LogEntries.txt", "Test Data")]
public void Parsing100LogFileEntriesReturnsANewParsedLogEntriesWith100Items()
{
// Arrange.
const string fileName = @"Test Data\100LogEntries.txt";
ILogEntryService logEntryService = new PunkBusterLogEntryService();
// Act.
var parsedLogEntries = logEntryService.ParseLogFile(fileName, 0);
// Assert.
Assert.IsNotNull(parsedLogEntries);
Assert.AreEqual(100, parsedLogEntries.LogEntries.Count);
// Snipped the remaining asserts to cut back on wasting your time.
}
それでは、これを分解しましょう..
[TestMethod]
私たちは皆、それが何であるかを知っています。
[DeploymentItem(@"Test Data\100LogEntries.txt", "Test Data")]
bin ディレクトリから始めて、フォルダーに移動し、すべてのテストが実行されるときに MS Test が作成するルート MS Test 出力ディレクトリ内の宛先フォルダーにファイルをTest Data
コピーします。100LogEntries.txt
Test Data
これが私の出力フォルダー構造の外観です (すべての混乱を許してください)。

そして出来上がり!プログラムで展開ファイルがあります。
PRO TIP #2 - 属性で 2 番目の文字列引数を使用しない場合DeploymentItem
、ファイルは現在の MS Test のルート OUT フォルダーにコピーされます。
const string fileName = @"Test Data\100LogEntries.txt";
これで、ファイルへのパスはOUT
、現在の MS テストのフォルダーに対して相対的になります。そのため、ファイルを ... という名前のディレクトリに展開するように明示的に言ったTest Data
ので、ファイルを読みたいときにコードでそれを正しく参照するようにする必要があります。
確認のために->そのファイル名のフルパスはC:\lots of blah blah blah\My Solution\TestResults\PureKrome_PUREKROME-PC 2011-01-05 23_41_23\Out\Test Data
、現在のMSテストの..のようなものに変換されます。