1

プロジェクトに同梱される特定のファイルの存在(およびその他のもの)を確認するためのテストを作成したいと思います。

これは私が今持っているものです:

[DeploymentItem("1.pdf")]
[DeploymentItem("2.pdf")]    
public class DoFilesExist
{
    List<string> _Files;

    public DoFilesExist()
    {
        _Files = new List<string>();
        _Files.Add("1.pdf");
        _Files.Add("2.pdf");
    }

    delegate void fileTest(string fileName);

    void Map(fileTest test)
    {
        foreach (string file in _Files)
        {
            test(file);
        }            
    }

    [TestMethod]
    public void TestExists()
    {
        Map( x => Assert.IsTrue(File.Exists(x), x + " doesn't exist") );
    }
}

ご覧のとおり、テストする別のファイルを追加する場合は、[DeploymentItem]と_Filesリストに追加する必要があります。

DeploymentItemsを動的に変更する方法はありますか?または、実行時にそれらから取得します。ここにはおそらく30を超えるファイルがあり、2つのリストは必要ありません。

前もって感謝します!

4

2 に答える 2

4

主に機能するかどうかをテストしているようです[DeploymentItem]...結局のところ、実際の展開[DeploymentItem]を定義するのではありません。

個人的には、これは私がMSTestについて軽蔑していることです。.NETプロジェクトには、デプロイメントデータを定義する方法がすでにあります-プロジェクトです!2番目の方法を導入することにより、重複とリスクの両方が導入されます。VSTSライセンスを持っているのに、MSTestの代わりにNUnitを使用する理由の1つ</rant>

質問を再確認してください。リフレクションを使用してDeploymentItemマーカーを確認することもできますが、テストフレームワーク自体を除いて、これが何をテストしているのかはよくわかりません...

于 2009-07-15T22:12:56.163 に答える
0

1つの可能性は、ファイルをサブディレクトリに配置することです。そうすれば、展開アイテムの参照を取得できます。

[DeploymentItem("files\"]
public class Test
{
}

各ファイルにCopyAlwaysのマークを付ける必要がある場合もあります。詳細については、メインの質問を参照してください。

于 2012-07-13T10:06:44.747 に答える