加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何在单元测试中删除过时的DeploymentItem?

发布时间:2020-12-15 17:16:30 所属栏目:百科 来源:网络整理
导读:考虑以下测试类: [TestClass]public class ExampleTests{ [TestMethod] public void FileDoesNotExists() { Assert.IsFalse(System.IO.File.Exists("testfile.txt")); } [TestMethod] [DeploymentItem("testfile.txt")] public void FileExists() { Assert.
考虑以下测试类:

[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在部署后不会更改,因此只会部署每个项目一次.在短期内,我已经将测试中的代码更改为不再需要此行为,从长期来看,我很可能会实现一个不做出此假设的属性.

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读