web-dev-qa-db-ja.com

DeploymentItemがファイルをデプロイしない

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

ユニットテストプロジェクトで、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
    }
}

私は何を間違っていますか?

18
fhnaseer

私は this thread で2つの可能な解決策を見つけました:

  1. 展開ファイルの「出力フォルダーにコピー」プロパティを「常にコピー」に設定します( DeploymentItem属性の問題 を参照)
  2. Local.testsettingsファイルの "Enable Deployment"設定を確認します( DeploymentItem属性の問題 を参照)

お役に立てれば。

18
Erik Schierboom

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

7
Ravi C

DeploymentItem属性がまったく同じ方法で設定されていても、一部のテストではコピーが機能しているが最新ではない一連のテストがありました。他のすべてを使い果たした後、私はソリューションに「クリーンソリューション」を実行して再実行し、それは正しくコピーし始めました。 YMMV

0
Kevin McDowell