Это лишь небольшая часть большой статьи, которую я написал год или два назад.Моя компания использует это частично как стандарт для модульного тестирования.Надеюсь, это поможет.
Золотое правило модульного теста
«Для каждого открытого метода на бизнес-уровне приложения должен быть хотя бы 1 модульный тест.Для каждого класса в приложении должен быть хотя бы один тестовый класс ».
Элементы для модульного теста
В целом существует четыре типа методов, которыесвязаны с классами;
- Модификаторы: Изменяет одно или несколько
значений (или объектов), связанных с
атрибутами объекта - Средства доступа: Возвращает значение (или объект), которое зависит от состояния объекта
- Конструкторы: Вызывается один раз при создании объекта
- Деструкторы: Вызывается при уничтожении объекта.
При написании модульных тестов основной задачей разработчика должны быть любые общедоступные методы, которые используются в их классе на бизнес-уровнесам (методы, которые вы будете использовать в своем веб-слое).Таким образом, разработчик также будет тестировать любые частные методы и любые открытые методы классов в DAL, которые используются классом, который тестируется модулем.
Из-за присущей классу природыи естественные процессы модульного теста, конструкторы и деструкторы неотъемлемо встроены в каждый модульный тест.Однако в некоторых случаях, в зависимости от архитектуры и предпочтений разработчика, эти два класса могут содержать пользовательский код и могут быть перегружены, в этих случаях все возможные сценарии перегрузки также должны быть подвергнуты модульному тестированию.В ситуации, когда существует несколько перегрузок для конструктора класса, каждый публичный метод должен быть протестирован один раз с использованием каждого из перегруженных конструкторов.
Как настроить / использовать проекты модульных тестов
В каждом решении должен быть проект модульного тестирования, который можно сохранить и использовать в любой архитектуре, используемой для обмена кодом.Делая это, и каждый разработчик работает над определенным проектом, обновляя и сохраняя свои модульные тесты, это позволит другим разработчикам (текущим и будущим) использовать одни и те же модульные тесты.Тщательно документируя каждый модульный тест относительно того, как он должен функционировать и при каких обстоятельствах, он создает документ, который позволяет разработчикам, которые являются новыми для приложения, ознакомиться со структурой и предполагаемым использованием каждого объекта.При создании юнит-тестов (Visual Studio) автоматически создаст тестовый класс в рамках тестового проекта для каждого из методов, которые выбирает пользователь.Это позволяет организовывать модульные тесты и отделять их от других модульных тестов других классов.
Как успешно выполнить модульный тест
Не включая конструкторы и деструкторы класса, два других типа методов, модификаторы и средства доступа могут быть дополнительно разделены на семь подтипов.
• Модификаторы
o Вставки
o Обновления
o Удаление
o Полиморфы
• Аксессоры
o Единственное извлечение
o Групповое извлечение
o Массовое извлечение
Вставки, обновления, удаления и полиморф
Вставки Вставки состоят из любой ситуации, когда данные добавляются.Это не ограничивается базой данных SQL, но также может применяться к другим источникам данных, включая XML, массивы и массивы, реляционные источники данных в памяти и даже внешние текстовые документы.
Updates Обновления аналогичны вставкам, за исключением того, что вместо добавления новых данных они изменяют существующие данные.Как и вставки, они не ограничиваются SQL.
Удаляет Удаляетудаление или отключение данных. Они также могут предназначаться для тех же типов данных, что и вставки и обновления.
Полиморфы
Проще говоря, полиморфизм - это характеристика способности присваивать различное значение или использование чему-либо в разных контекстах, в частности, чтобы объект, такой как переменная, функция или объект, мог иметь более одной формы.
Одиночное, групповое и массовое извлечение
Исключительные поиски
Исключительные извлечения подразумевают возврат одного значения или записи. Это может быть так же просто, как метод, который возвращает имя пользователя на основе ввода идентификатора пользователя.
Группа поиска
Групповые извлечения используются, когда требуется подмножество более крупной группы. Групповой поиск используется для таких вещей, как фильтрация.
Массовый поиск
Массовый поиск предполагает возврат целых наборов данных. Это может быть вся таблица из базы данных, или весь XML-документ, или массив значений.
Подтипы методов и модульное тестирование
При работе с методами-модификаторами должны соблюдаться следующие пять правил. Помня о том, что каждый публичный метод должен быть протестирован, это также не означает, что каждый публичный метод должен быть отделен от своего собственного метода тестирования.
1) Каждому экземпляру вставки, обновления или удаления должен предшествовать извлечение, а затем поиск, причем требуемый тип извлечения зависит от типа / формата изменяемых данных.
2) За каждым экземпляром вставки должно следовать удаление. Это гарантирует, что любая вставка данных будет удалена.
3) Перед обновлениями должно предшествовать извлечение, а также парное соединение, чтобы гарантировать, что любые внесенные изменения данных отменены.
4) Хотя извлечения могут быть проверены во время испытания модификатора, они также должны быть проверены независимо.
5) Во время тестирования поиска нет необходимости проверять фактические данные, только те данные были возвращены.