0

だから私はここでPEXで遊んでいます、それは素晴らしいアイデアのようです。

ただし、パラメーター単体テストを使用してequalsメソッドをテストする方法がないなど、いくつかの問題があります。

多分方法がないかもしれません、多分それは私がまだ理解していないテクニックです。

誰かがまともな考えを持っている必要があります。

たとえば、moqでこれを行っている場合は、両方のオブジェクトのすべてのプロパティが読み取られていることを確認し、自分で比較して検証します。ただし、パラメタライズされたテストでこのアプローチを使用する方法がわかりません。

問題は、メソッド呼び出しが行われ、プロパティがビジネスロジックで設定/読み取られることを確認する必要があることです。PEXでこれを行う方法がわかりません。また、実際には大量のドキュメントはありません。

4

1 に答える 1

1

等価性の数学的な定義に関連する、確認できる基本的なプロパティがいくつかあります。

  • クラッシュしません: a == b は決して例外をスローしません
  • 対称: (a == b) == (b == a)
  • 再帰: (a == a) == true
  • 推移性: (a == b) && (b == c) ==> a == c
  • 与えられた Func f, a == b ==> f(a) == f(b)

それらはすべて素晴らしいですが、平等が機能することを保証するものではありません。ただし、平等があなたにとって何を意味するかをアサーションとして指定する必要がある点があります。たとえば、プロパティ P の値は等しい必要があるなどです。最終的には、テストとして等価性の 2 番目の仕様が作成されます。

GetHashCode との関係を調べると、さらに興味深いことが起こります。

  • a.GetHashCode() !+ b.GetHashCode() ==> a != b
  • べき等: a.GetHashCode() == a.GetHashCode()
于 2010-09-21T03:26:35.697 に答える