如何在单元测试中删除过时的部署项
本文关键字:过时 部署 删除 单元测试 | 更新日期: 2023-09-27 17:55:12
考虑以下测试类:
[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,但无法找到一种可靠的方法来让两个测试都通过,但似乎应该有一种简单的方法来做到这一点。 有这样的方法吗?
update:这似乎是不可能的,因为测试框架假定部署项在部署后不会更改,因此只部署每个项一次。 在短期内,我已经更改了所测试的代码,不再需要这种行为,从长远来看,我很可能会实现一个不做这个假设的属性。
DeploymentItem
实际上是您通常会部署到客户端计算机的文件,因此您不应该在部署它们后删除它们!
您应该为单元测试创建一个"沙盒"目录,并使用正常的 .NET 文件系统方法(如 File.Delete
)来执行文件复制/访问/删除操作。