0

所以我在这里玩 PEX,这似乎是个好主意。

但是我遇到了一些问题,例如我无法使用参数单元测试来测试 equals 方法。

也许没有办法,也许这是我还没有弄清楚的技术。

一定有人有个好主意。

例如,如果我在 moq 中执行此操作,我将确保读取两个对象上的所有属性并自己进行比较以验证它们。但是我看不到如何在参数化测试中使用这种方法。

问题是我需要验证是否进行了方法调用并且在我的业务逻辑中设置/读取了属性。我不知道如何在 PEX 中做到这一点,而且那里并没有大量的文档。

4

1 回答 1

1

您可以检查一些与等式的数学定义相关的基本属性:

  • 不会崩溃:a == b 从不抛出异常
  • 对称: (a == b) == (b == a)
  • 反身的: (a == a) == true
  • 传递性: (a == b) && (b == c) ==> a == c
  • 给定函数 f, a == b ==> f(a) == f(b)

所有这些都很好,但绝对不能保证平等有效。但是在某些时候,您将在断言中指定平等对您意味着什么。例如,属性 P 的值应该相等,等等……最终,您将得到第二个相等性规范作为测试。

当您研究与 GetHashCode 的关系时,事情会变得更有趣:

  • a.GetHashCode() !+ b.GetHashCode() ==> a != b
  • 幂等:a.GetHashCode() == a.GetHashCode()
于 2010-09-21T03:26:35.697 回答