【问题标题】:Unit Test for HashSet<T> with auto implenented property initializer [duplicate]具有自动实现的属性初始值设定项的 HashSet<T> 的单元测试 [重复]
【发布时间】:2019-06-16 18:49:54
【问题描述】:

我想编写一个单元测试来检查 C# MSTest 中的 HashSet 以覆盖我班级的 ICollection,如下所示:

public ICollection<ObjectClass> Object { get; private set; } = new HashSet<ObjectClass>();

有人知道如何断言这部分代码吗?

编辑1: 我不想忽略或排除自动属性初始化器我正在寻找一种测试它们的方法

【问题讨论】:

  • 我不会测试它是否是一个强硬的 HashSet,因为该类公开了一个 ICollection。我只会在创建类的新实例时测试它不为空且为空(假设它是非静态、非抽象类的属性等等)。
  • 我认为这根本不应该被测试
  • @Marco 确实,它已经有了tests
  • 任意的 100% 覆盖率报告都是无稽之谈。对此进行测试有什么用?
  • @PayamKhaninejad:这是一个带有自动实现属性的错误,您不应该测试。最新版本的 dotCover 应该已经修复了它。 MSTest 的 Code Coverage 分析也有同样的 bug

标签: c# unit-testing testing mstest dotcover


【解决方案1】:

您不需要检查ShiftTemplateCalendar 的底层实现是否属于特定类型的测试。

您必须编写使用此属性的测试(例如添加/删除元素)或至少检查此属性永远不会为空(即使在构造包含集合的对象之后)。

在您的一个 cmets 中,您询问是否可以从您的班级中删除此属性。正如我们在您的屏幕截图中看到的,3 个测试中有 3 个通过了此属性。因此,如果至少有 3 个测试使用此属性,为什么不应该测试该行?

似乎是您的覆盖工具中的一个错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 2020-09-21
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多