メソッドを持つCoordinate
クラスがありadd(Coordinate)
ます。このクラスの単体テストを作成するときassertEqual
、結果に対するテストがあります。
a = Coordinate(1,2,3)
b = Coordinate(5,6,7)
result = a.add(b)
assertEqual(result.x, 6)
assertEqual(result.y, 8)
assertEqual(result.z,10)
私はこれをかなり簡単に「偽造」することができます:
def add(self, other):
return Coordinate(6,8,10)
これは、テストの失敗に対する最も簡単な解決策です。次のステップは、私がこのように偽造するのを防ぐ2番目のテストを作成することです。私は次のいずれかを行うことができます:
- 異なる番号で別の
assertEqual
テストを作成します(したがって、偽造はCoordinate(6,8,10)
合格しません、または - 2つの異なる入力を使用してテストを作成
assertNotEqual
し、結果がではないことを確認し6,8,10
ます。
テストを作成するとassertEquals
、非常によく似た2つのテストがあります。これは問題ですか?プロジェクトで同様のコードを見た場合、それをリファクタリングしたくなるでしょう。テストコードに対してもこれを行う必要があります-もしそうなら、これはテストのすべてのペアがリファクタリングされることを意味しませんか?
私がを書いた場合assertNotEqual
、テストは「偽の結果」をテストするだけです。これは、アルゴリズムエラーから発生することはないと確信しています。基本的に、テストを作成したら、両方のテストに合格するように結果を偽造するのをやめ、assertNotEquals
テストを安全に削除できます。それでもコードに自信があります。したがって、テストを作成し、偽物を修正し、テストを削除します。 、それはかなりばかげているようです。
この状況で私は何をすべきですか?