【发布时间】:2011-05-05 19:40:44
【问题描述】:
考虑以下测试类:
[TestClass]
public class ExampleTests
{
[TestMethod]
public void FileDoesNotExists()
{
Assert.IsFalse(System.IO.File.Exists("testfile.txt"));
}
[TestMethod]
[DeploymentItem("testfile.txt")]
public void FileExists()
{
Assert.IsTrue(System.IO.File.Exists("testfile.txt"));
}
}
根据这些测试的运行顺序,它们可能通过,但由于无法保证它们会按照定义的顺序运行,因此现实世界的行为是不确定的。 . 显然这很糟糕。
我环顾四周并尝试了 TestCleanupAttribute,但未能找到一种可靠的方法让两个测试都通过,但似乎应该有一种简单的方法可以做到这一点。有这样的方法吗?
更新: 这似乎是不可能的,因为测试框架假定 DeploymentItems 在部署后不会更改,因此每个项目只部署一次。在短期内,我已将被测代码更改为不再需要这种行为,从长远来看,我很可能会实现一个不做这种假设的属性。
【问题讨论】:
标签: c# unit-testing mstest deploymentitem