5

MSTest 単体テストのパラメーターとして静的変数を使用したいのですDeploymentItemが、それができないようです。単体テストの実行時に DLL ファイルと一緒にコピーする必要がある XSL ファイルがあり、その場所を次のように定義しました。

private static string _xslPath = Path.Combine("MyProjectDir", "transform.xsl");

ただし、次のことを行うと:

[TestMethod]
[DeploymentItem(DLL)]
[DeploymentItem(_xslPath)]
public void XmlToResultsTest() { }

次のビルド エラーが発生します。

属性引数は、定数式、typeof 式、または属性パラメーター タイプの配列作成式でなければなりません

わかりました、わかりましたが、自分でパスを組み立てるのはとても汚いようです:

[DeploymentItem(@"MyProjectDir\transform.xsl")]

ここで使用したいことについて過度にうるさいPath.Combineですか?私が見逃している別の選択肢はありますか?XSL ファイルをルート ソリューション ディレクトリに置くだけでよいので、プロジェクト ディレクトリをパスの一部として渡す必要はありません。

4

2 に答える 2

10

属性は定数文字列のみを使用できるため、いいえ: これを行うことはできません (事前に結合されたバージョンまたはリテラル連結を使用する必要があります - ではありませんPath.Combine)。テスト プロジェクトの展開設定 (testrunco​​nfig?) も使用できますが、率直に言って、展開用に (通常のように csproj で) ファイルをマークするだけの NUnit アプローチを使用することを好みます。MSがこれを定義する別の方法を追加した理由をまだ理解していません...

于 2010-01-25T16:51:32.623 に答える
1

これはうまくいくはずです:

[TestClass]
[DeploymentItem(TestParams.ConfigFileName)]
public class MyTest
{
    private static class TestParams
    {
        public const string ConfigFileName = "TestConfig.xml";
    }
// ...
}
于 2015-02-16T13:20:31.247 に答える