Просто в общих чертах, так как в настоящее время я в основном занимаюсь Java, а не .NET. Я считаю, что TDD сначала кажется довольно неуклюжим для большинства людей, но дайте ему немного времени и посмотрите, нравится вам это или нет.
Что касается написания тестов, используйте этот общий подход. Создайте метод, который вы хотите протестировать, но без какого-либо тела. Создайте тест, выполняющий определенное поведение, и сделайте его простым Запустите тест, и он должен провалиться (запустите красный, если ваша IDE делает это). Затем напишите строку или пару строк кода, которые позволят успешно выполнить тест (выделите зеленым цветом). Теперь напишите еще один тест и повторите. Если у вас есть условия, убедитесь, что все пути проверены. То есть, напишите один путь, затем другой, написав тест для каждого первого.
Если у вас есть метод, который работает так, как вы хотите, теперь вы можете рефакторировать его так, как вам хочется, поскольку тест всегда будет там, чтобы проверить вашу работу. Посмотрите на метод. Возможно, есть 4-5 строк, которые идут вместе и могут быть вытянуты в метод. Присвойте методу правильное имя, чтобы при чтении вызывающего метода это имя сообщало вам, что произойдет без детализации. Существуют и другие возможные рефакторинги, особенно если вы видите шаблоны проектирования, которые вы можете использовать.
Убедитесь, что вы часто запускаете тесты во время рефакторинга.