Я думаю, у вас есть правильная идея, но я думаю, что вы превращаете это в большее дело, чем оно есть. Если вы начнете заниматься TDD, вашей первой реакцией, вероятно, будет «это все?». А потом, надеюсь, вы должны сказать «ага»!
Главное, что вы получаете nUnit, изучаете учебник, а затем убедитесь, что вы пишете тест для всего, что вы делаете, прежде чем писать реализацию. Вы можете пропустить написание тестов для методов доступа к свойствам, но для всего, что требует каких-либо вычислений, сначала вы должны написать тест.
Итак, представьте, что вы тестируете калькулятор Add (int 1, int 2), первое, что вы думаете, это «как мне это сломать». Мои идеи о том, где что-то может пойти не так: отрицательные числа, нули и переполнения. Хитрость заключается в том, чтобы представить каждую ошибку, которую может совершить человек, который собирается создать метод Add (), а затем написать тест против него. Итак, я мог бы написать:
Assert.AreEqual(5, calc.Add(2, 3), "Adding positives not as expected");
Assert.AreEqual(-5, calc.Add(-2, -3), "Adding negatives not as expected");
Assert.AreEqual(-2, calc.Add(-3, 2), "Adding one positive and one negative not as expected");
// your framework might provide a cleaner way of doing this:
try {
int result = calc.Add(Int32.Max, 5);
Assert.Fail("Expected overflow error. Received: " + result);
} catch(Exception e) {
// This should be a more specific error that I'm not looking up
}
Итак, как вы можете видеть, я попытался выяснить, как метод Add () может не работать, а затем протестировать его. Я также искал интересные угловые случаи и четко определил ожидаемое поведение. И теперь я могу свободно кодировать метод Add ().
Теперь, хотя это не так уж и здорово, вы знаете, что ваш метод Add () будет непоколебимым, когда вы начнете создавать сложные математические функции, которые объединяют ваш метод Sin () с вашим методом Sqrt () вместе с вашим Add () метод.
Что бы там ни было, это разработка через тестирование. Не стоит слишком зацикливаться на интерфейсах или внедрении зависимостей. Это может прийти позже, если вам это нужно.