Unit testing is, roughly speaking, testing bits of your code in isolation with test code. The immediate advantages that come to mind are:
- Running the tests becomes automate-able and repeatable
- You can test at a much more granular level than point-and-click testing via a GUI
Мой вопрос: каковы текущие «лучшие практики» с точки зрения инструментов, а также когда и где использовать модульное тестирование как часть ежедневного кодирования?
Давайте попробуем быть немного агностиком языка и охватить все основы.





Семейство xUnit - это основа модульного тестирования. Они интегрированы в Netbeans, Eclipse и многие другие IDE. Они предлагают простое структурированное решение для модульного тестирования.
При написании теста я всегда стараюсь минимизировать использование внешнего кода. Под этим я подразумеваю: я стараюсь как можно больше свести к минимуму код установки и разрыва для теста и стараюсь по возможности избегать использования других модулей / блоков кода. Хорошо написанный модульный код не должен требовать слишком большого количества внешнего кода при его настройке и демонтаже.
Широко используется так называемый фреймворк xUnit. Первоначально он был разработан для Smalltalk как SUnit, затем превратился в JUnit для Java и теперь имеет множество других реализаций, таких как NUnit для .Net. Это почти стандарт де-факто - если вы говорите, что используете модульные тесты, большинство других разработчиков подумают, что вы имеете в виду xUnit или аналогичный.
Отличный ресурс для «лучших практик» - это Блог тестирования Google, например, недавний пост на Написание тестируемого кода - фантастический ресурс. В частности, их еженедельные публикации из серии «Тестирование в туалете» отлично подходят для размещения вокруг вашего куба или туалета, чтобы вы всегда могли подумать о тестировании.
Хорошо, вот несколько лучших практик от человека, который не тестирует модули так часто, как должен ... кашляет.
Да, пожалуйста, объясните, почему вам не следует тестировать графический интерфейс.
Вы запускаете различные поведенческие тесты в графическом интерфейсе?
NUnit - хороший инструмент для любого из языков .NET.
Модульные тесты можно использовать по-разному:
Вы можете посмотреть TDD на трех индексных картах и Три карточки-указатели, которые помогут легко запомнить суть разработки, основанной на тестировании:
Карточка №1. Три закона дяди Боба
Карточка # 2: ПЕРВЫЕ Принципы
Карточка # 3: Ядро TDD
Не забывайте о поддержке рефакторинга. ReSharper в .NET обеспечивает автоматический рефакторинг и быстрые исправления отсутствующего кода. Это означает, что если вы напишете вызов тому, чего не существует, ReSharper спросит, хотите ли вы создать недостающий фрагмент.
Привет, Джон, не могли бы вы рассказать, почему бы вам не провести модульное тестирование графического интерфейса?