2009-07-15 74 views
1

我想编写测试来检查将与我们的项目一起交付的某些文件的存在(和其他东西)。是否有可能拥有Dynamic-On-The-Fly DeploymentItems?

这就是我现在所拥有的:

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

在此先感谢!

回答

4

它看起来像你主要是测试是否[DeploymentItem]作品...毕竟 - 它不是[DeploymentItem]定义您实际部署。

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

重新提出这个问题;你可以使用反射看DeploymentItem标记,但我真的不知道这是测试,除了测试框架本身...

+0

这个简单的例子是测试框架......但是,我将做的不仅仅是一个File.Exists()调用。我想简化问题的例子。 – Jeremiah 2009-07-16 13:13:42

0

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

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

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

相关问题