10

DeploymentItemMSTest単体テストで属性を使用すると、XSLファイルをテストアセンブリと同じディレクトリにコピーするのに問題があります。この質問に対して選択した回答に従いました。コピーする必要のあるファイルの[出力ディレクトリにコピー]が[常にコピー]に設定されています。ProjectDir \ binディレクトリ(ターゲットディレクトリ)を確認すると、コピーしたいファイルがDLLやPDBと一緒に実際にそこにあります。

次の設定でいくつかの単体テストがあります。

private const string DLL = "Service.dll";
private const string XSL_PATH = "transform.xsl";

[TestInitialize]
public void InitializeTest()
{
    Assert.IsTrue(File.Exists(DLL)); // passes
}

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(XSL_PATH)]
public void XmlToResultsTest()
{
    Assert.IsTrue(File.Exists(XSL_PATH)); // fails
}

MSTestのTestResults\特定のTestRun\Outディレクトリを確認すると、DLLとPDBが表示されますが、XSLファイルが存在しないため、XSLテストは失敗します。私が知りたいのは、Visual Studioに明示的にコピーするように指示した場合でも、XSLファイルがDLLおよびPDBと一緒にコピーされない理由DeploymentItemです。

4

4 に答える 4

10

私の関連する質問に対するMarcGravellの回答のおかげで、MSTest .testrunco​​nfigファイルを更新して、XSLファイルが「Deployment」セクションに含まれるようにしました。これにより、単体テストに合格できますが、これを実行する必要があることにまだ戸惑っていDeploymentItemます。プロジェクト内のファイルのプロパティを組み合わせてマークを付けて、出力ディレクトリにコピーするだけで十分ではないでしょうか。

于 2010-01-25T17:30:45.600 に答える
1

DeploymentItem 属性が期待どおりに機能しないという同様の状況が職場で発生しました。また、プロジェクト プラットフォームを「Any CPU」に設定した 64 ビット マシンも使用していました。回避策として、単体テストに必要なファイルを単体テスト プロジェクトからのリンクとして含め、その [出力ディレクトリにコピー] を [常にコピー] に設定しました。

于 2013-06-12T19:42:37.733 に答える
1

展開アイテムでリテラル文字列を使用しいたにもかかわらず、同じ問題が発生しました。テスト設定の「展開」セクションにファイルを追加しようとしましたが、どちらも機能しませんでした。問題はテスト プラットフォームに関連していることが判明しました。

私は 64 ビット マシンを使用しており、テストしていたプロジェクトと単体テスト プロジェクトのプラットフォーム ターゲットの両方が「任意の CPU」でした。

「64 ビット マシンで 64 ビット プロセスでテストを実行する」を選択した場合にのみ、展開項目がコピーされることがわかりました。

于 2011-07-08T18:48:16.660 に答える
1

出力ディレクトリがリテラル文字列でない限り、VS2008 展開アイテムはサイレントに失敗すると言われています。うーん^_^

于 2010-03-02T18:20:34.577 に答える