2012-06-13 18 views
8

私はビジュアルスタジオのユニットテストで新しく、物理的なXMLファイルをロードします。 このファイルはユニットテストプロジェクトのコンテンツとして出力ディレクトリにコピーされています。ユニットテストの出力ディレクトリにコンテンツファイルを追加

したがって、プロジェクトをコンパイルすると、xmlファイルは出力ディレクトリにあります。 しかし、テストを実行すると、すべての依存DLLを含む新しいディレクトリが作成されますが、xmlファイルはコピーされません。

テストを実行するにはXmlの内容が必要です。私は、実行フォルダ内のXMLファイルのパスを取得するには、このコードを実行します。

private static string GetXmlFullName() 
{ 
    // GetApplicationPath use the current DLL to find the physical path 
    // of the current application 
    string executeDirectory = AssemblyHelper.GetApplicationPath(); 
    return Path.Combine(executeDirectory, "content.xml"); 
} 

例外は次のとおりです。

System.IO.DirectoryNotFoundException: 'd:\***\solutiondirectory\testresults\*** 2012-06-13 17_59_53\out\content.xml'. 

私が実行したフォルダにこのファイルを追加することができますどのように?

ありがとうございます。 (と私の英語には申し訳ありません...)

+0

は、この記事の重複のように見えるDataフォルダ内のすべてのファイルを含めます//stackoverflow.com/questions/5383987/how-can-i-include-sample-data-files-in-vs-unit-tests – Clueless

+0

@Clueless:確かに。この投稿は見つかりませんでした。ありがとうございました。 – Hyralex

+0

関連する - https://stackoverflow.com/questions/5581628/c-sharp-test-resources – sashoalm

答えて

6

あなたはをテストクラスに配置する必要があります。 [ユニットテストのサンプルデータ] [1] [1]:例:http:

[TestClass()] 
[DeploymentItem("Data")] 
public class MyTestClass 
{ 
    ... 
} 
+0

非常に簡単です。できます。ありがとうございました。 – Hyralex

+0

DeploymentItem属性は、アイテムの[ビルドアクション]が[コンテンツ]に設定され、[出力ディレクトリへのコピー]が[新しい場合はコピー]または[常にコピー]に設定されている場合にのみ機能します。 http://stackoverflow.com/a/9107244/74585 –

+0

ソリューションアイテム - > Local.testsettingsでDeploymentを有効にして、展開したいディレクトリを追加しなければなりませんでした。ピー! –

関連する問題