gpt4 book ai didi

c# - 如何在单元测试中删除陈旧的 DeploymentItems?

转载 作者:行者123 更新时间:2023-11-30 12:35:16 27 4
gpt4 key购买 nike

考虑以下测试类:

[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 一旦部署就不会改变,因此每个项目只部署一次。在短期内,我已经更改了被测代码以不再需要这种行为,从长远来看,我很可能会实现一个不做这种假设的属性。

最佳答案

DeploymentItem 实际上是您通常会部署到客户端计算机的文件,因此在部署它们之后您不打算删除它们!

您应该为您的单元测试创​​建一个“沙盒”目录,并使用普通的 .NET 文件系统方法(例如 File.Delete)来执行您的文件复制/访问/删除操作。

关于c# - 如何在单元测试中删除陈旧的 DeploymentItems?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5903223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com