【问题标题】:Is it Possible to have Dynamic - On-The-Fly DeploymentItems?是否有可能拥有动态的动态部署项目?
【发布时间】:2009-07-15 21:40:58
【问题描述】:

我想编写测试来检查将与我们的项目一起发布的某些文件的存在(和其他内容)。

这就是我现在拥有的:

[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 个文件,而且我不想要两个列表。

提前致谢!

【问题讨论】:

    标签: c# tdd mstest deploymentitem


    【解决方案1】:

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

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

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

    【讨论】:

    • 这个简单的例子正在测试框架......但是,我要做的不仅仅是 File.Exists() 调用。我想简化问题的示例。
    • 如何通过反射得到DeploymentItem的?
    • GetType().GetCustomAttributes(typeof(DeploymentItemAttribute))
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 2016-01-23
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多