はじめに
Unitテスト時に2つのList
ICompareインタフェースで用意されている「Compare」メソッドは2つのオブジェクトを比較して、一方が他方より小さいか、同じか、または大きいかを示す値を返します。
このCompareメソッドをList
ICompareインタフェースの詳細は下記を参考にしてください。
非ジェネリック基本インターフェースを実装する
// メインのテストメソッド
[TestMethod]
public void Test()
{
List list1 = new List ()
{
new Animal("Dog", "Charlie"),
new Animal("Cat", "Mittens"),
new Animal("Cow", "Bacon"),
};
List list2 = new List ()
{
new Animal("Dog", "Charlie"),
new Animal("Cat", "Mittens"),
new Animal("Cow", "Bacon"),
};
// 基本的には、下記で可能
CollectionAssert.AreEqual(list1, list2, new CustomCompare());
// カスタムメッセージをもつ場合
CollectionAssert.AreEqual(list1, list2, new CustomCompare(), "true");
}
// Animalクラス
public class Animal
{
public string Breed { get; set; }
public string Name { get; set; }
}
// カスタム比較クラスを実装する
public class CustomCompare : IComparer, IComparer
{
public int Compare(Animal a, Animal b)
{
return String.Compare(a.Name, b.Name);
}
int IComparer.Compare(object x, object y)
{
return Compare((Animal)x, (Animal)y);
}
}
最後に
単体テストでのオブジェクトの比較の場合、継承し、独自クラスを利用することで様々な比較を行うことができます。
是非ためしてみてください。