Скажем, у нас есть класс Point.
public class Point {
public double x;
public double y;
...
public isEqual(Point p) {
// here we worry about epsilons
}
}
Некоторые TestProject вычисляют, скажем, медиану треугольника и подтверждают (сравнивая координаты x и y), что возвращаемая точка верна.Но нам нужно ввести допуски.
Теперь мы прокляты, если мы это сделаем, прокляты, если мы этого не сделаем:
Сценарий 1
C # удобно перегружает Assert.AreEqual() для обработки допусков.Мы помещаем сравнение в TestProject.Мы используем Assert.AreEqual () и все хорошо.
Но если мы напишем десять разных тестов в десяти разных проектах, мы не будем инкапсулировать точечные сравнения.Это разбросано повсюду, что плохо.
Сценарий 2
Мы ставим сравнение вместе с классом Point.Теперь, когда нам нужно сравнить две точки, мы просто отправляем две точки в класс Point и получаем ответ.
Но мы больше не можем использовать Assert.AreEqual ().Все утверждения должны быть расположены в TestProject.
Мы должны использовать наш собственный компаратор.
Тогда возникает вопрос: как в C # выполнить Assert.AreEqual (), но вернутьBOOL