我想编写测试来检查将与我们的项目一起提供的某些文件的存在(以及其他内容)。
这就是我现在所拥有的:
[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 List
有没有办法动态更改DeploymentItems?或者在运行期间从他们那里抓住。我最终可能会有超过30个文件,我不想要两个列表。
提前致谢!
答案 0 :(得分:4)
看起来您主要测试的是[DeploymentItem]
是否有效......毕竟 - [DeploymentItem]
并非定义实际部署。
就个人而言,这是我对MSTest的鄙视; .NET项目已经具有定义部署数据的方法 - 项目!通过引入第二种方法,它引入了重复和风险。我使用NUnit而不是MSTest的原因之一,即使我有VSTS许可</rant>
。
回答问题;你可以使用反射来查看DeploymentItem
标记,但我真的不确定这是测试的,除了测试框架本身...
答案 1 :(得分:0)
一种可能性是将您的文件放入子目录,然后您可以使用部署项引用,例如。
[DeploymentItem("files\"]
public class Test
{
}
您可能还需要使用CopyAlways标记每个文件 - 有关详细信息,请参阅主要问题。