12

私はC#ライブラリのテストにMS unit testing frameworkを使用しています。 DeploymentItem attributeを使用して展開しているファイルを開く必要があります。しかし、Testデプロイメント・ディレクトリーにファイルをデプロイしているわけではありません。DeploymentItemがファイルを展開していません

私のユニットテストプロジェクトでは、このフォルダにフォルダTestFileを作成しました。そこには複数のファイルがあり、a.txt、b.txtと言うことができます。

私のユニットテストクラスでは、DeploymentItem属性を追加しました。しかし、ファイルはコピーされていません。

ここに私のコードです。

[TestClass] 
[DeploymentItem("TestFile")] 
public class CustomLibraryTest 
{ 
    public TestContext TestContext { get; set; } 

    [TestMethod] 
    [DeploymentItem(@"TestFiles\a.txt")] // THis should deploy a.txt to test deployment directory 
    { 
     var path = TestContext.TestDeploymentDir + "a.txt"; 
     // Now when I debug this unit-test, and open path in explorer, 
     // a.txt is not present in "TestResults\Deploy_fhafeez 2013-05-28 13_02_37\Out" folder 
    } 
} 

私は間違っていますか?

答えて

14

私はthis threadに2つの解決策を見つけた:

  1. は「常にコピーは」
  2. 「有効展開」をチェック(Problems with DeploymentItem attributeを参照)して、デプロイメントファイルの「出力フォルダにコピー」プロパティを設定します。 Local.testsettingsファイル(Problems with DeploymentItem attributeを参照)で設定してください。

希望します。

+0

ありがとうございました。私は「常にコピーする」を設定します。私はテスト設定を使用してデプロイメントを行っていますが、今回はDeplyomentAttributeを使用することを考えていました。 –

4

将来の参照として、私がVS 2015を使用して気づいたことから、展開アイテム属性で指定するパスは、ビルド出力(デバッグフォルダ)に対して相対的でなければなりません。フォルダ構造が "UnitTesting \ TestData \ Test.xml"の場合、DeploymentItemはDeploymentItem( ".. \ .. \ TestData \ Test.xml")でなければなりません この場合、TestDataフォルダはUnitTestingプロジェクトに含める必要はありません。

関連する問題