У меня есть ряд методов в C #, которые возвращают различные коллекции, которые я хочу протестировать. Я хотел бы использовать как можно меньше тестовых API - производительность не важна. Типичный пример:
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 и т. Д. Существуют ли преобразования, которые упрощают это (например, для преобразования массива в набор?).
Мне также нужно сделать это для моих собственных занятий. Я реализовал HashCode и Equals для них. Они (в основном) подклассы из (скажем) MySuperClass. Возможно ли реализовать функционал:
void MyAssertAreEqual(IEnumerable<MySuperClass> expected,
IEnumerable<MySuperClass> actual);
такой, что я могу позвонить:
IEnumerable<MyClassA> expected = ...;
IEnumerable<MyClassA> actual = ...;
MyAssertAreEqual(expected, actual);
вместо того, чтобы писать это для каждого класса