5

MSTest を使用した UnitTest の作成 戻り値と期待する値が等しいことを確認したいと思います。

IComparable期待される型は、インターフェイスもインターフェイスも実装しないカスタム型です。そのため、2 つのオブジェクトを比較できるIEquatableようにしたいと考えています。Assert.AreEqual

この可能性が に存在することは承知していCollectionAssert.AreEqualます。ただし、この方法ではICollection、オブジェクトが継承しないオブジェクトを 2 つ継承する必要があります。

Assert.AreEqualカスタム比較子を指定できないのはなぜですか? 何か不足していますか?

4

1 に答える 1

2

これが実際の理由かどうかはわかりませんが、カスタムIComparerに問題があった場合はどうなるでしょうか - 単体テストは無意味です (テスト フレームワークには、単体テストが「正しい」かどうかは言うまでもなく、単体テストを作成したかどうかを判断する方法がないことに注意してください)。 ")

テストで比較子を作成できますか?

var com = new MyComparer<Foo>();
int expected=0;
int actual = com.Compare(a,b);
if (actual!=0)
{
  Assert.Fail("oops");
}

理想的ではないかもしれませんが、うまくいくはずです...私は数年前にmsdnでこの質問を見つけましたが、回答はありませんでしたが、質問の投稿者による回避策への興味深いアプローチです。

于 2013-10-22T20:24:24.440 に答える