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 列表

有没有办法动态更改部署项?或者在运行时从他们那里获取。我最终可能会在这里拥有超过 30 个文件,而且我不想要两个列表。

提前致谢!

4

2 回答 2

4

看起来您主要是在测试是否[DeploymentItem]有效......毕竟 - 它不是[DeploymentItem]定义您的实际部署。

就个人而言,这是我鄙视 MSTest 的一点;.NET 项目已经一种方法来定义部署数据 - 项目!通过引入第二种方法,它引入了重复和风险。我使用 NUnit 而不是 MSTest 的原因之一,即使我有 VSTS 许可证</rant>

重新提出问题;您可以使用反射来查看DeploymentItem标记,但我真的不确定这是在测试什么,除了测试框架本身......

于 2009-07-15T22:12:56.163 回答
0

一种可能性是将您的文件放入子目录中,然后您可以获得部署项引用,例如

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

您可能还需要使用 CopyAlways 标记每个文件 - 有关详细信息,请参阅主要问题。

于 2012-07-13T10:06:44.747 回答