私は、テストしたいさまざまなコレクションを返すC#のメソッドをいくつか持っています。できるだけ少数のテストAPIを使用したいと思います。パフォーマンスは重要ではありません。典型的な例は次のとおりです。C#でコレクションを含む単体テストを作成するにはどうすればよいですか?
HashSet<string> actualSet = MyCreateSet();
string[] expectedArray = new string[]{"a", "c", "b"};
MyAssertAreEqual(expectedArray, actualSet);
// ...
void MyAssertAreEqual(string[] expected, HashSet<string> actual)
{
HashSet<string> expectedSet = new HashSet<string>();
foreach {string e in expected)
{
expectedSet.Add(e);
}
Assert.IsTrue(expectedSet.Equals(actualSet));
}
私はコレクションはなどの配列、リスト、ICollections、あるかどうかに応じて署名の数を書くことが午前変換がありますこれを単純化します(例えば、配列をSet?に変換する場合)。
私自身のクラスでもこれを行う必要があります。私はHashCodeとEqualsを実装しました。それらは(主に)MySuperClassからサブクラス化されています。それは機能を実装することが可能です:
void MyAssertAreEqual(IEnumerable<MySuperClass> expected,
IEnumerable<MySuperClass> actual);
私が呼び出すことができるよう
:
IEnumerable<MyClassA> expected = ...;
IEnumerable<MyClassA> actual = ...;
MyAssertAreEqual(expected, actual);
ではなく、すべてのクラス
ありがとう(私はMSTestを使用しています)これは私が必要とするもののように見えます。私たちはNUnit RSNに移行する予定です –