Подтвердить что ты не робот

Начало работы с модульным тестированием

Модульное тестирование - это, грубо говоря, тестирование битов вашего кода в изоляции с тестовым кодом. Ближайшие преимущества, которые приходят на ум, следующие:

  • Выполнение тестов становится автоматизированным и повторяемым
  • Вы можете протестировать на гораздо более гранулированном уровне, чем тестирование точки и щелчка через графический интерфейс

Rytmis

Мой вопрос: каковы текущие "лучшие практики" с точки зрения инструментов, а также когда и где использовать модульное тестирование как часть ежедневного кодирования?

Давайте попробуем быть языковым агностиком и накрыть все основы.

4b9b3361

Ответ 1

Хорошо, вот некоторые рекомендации от кого-то, кто не unit test столько, сколько он должен... кашлять.

  • Убедитесь, что ваши тесты тестируются one вещь и только одно.
  • Записывайте единичные тесты, когда идете. Предпочтительно перед вы пишете код, который вы тестируете.
  • Не unit test графический интерфейс.
  • Отделите свои проблемы.
  • Свести к минимуму зависимости ваших тестов.
  • Настроить с помощью mocks.

Ответ 2

Возможно, вам стоит взглянуть на TDD на трех индексных картах и Three Индексные карты легко запоминают суть тестового развития:

Карточка №1. Дядя Бобс Три закона

  • Не записывайте производственный код, кроме как пройти тест с ошибкой.
  • Напишите только достаточно теста, чтобы продемонстрировать сбой.
  • Напишите только достаточный производственный код для прохождения теста.

Карточка № 2: ПЕРВЫЕ принципы

  • Быстро: умственно-быстро, как в сотнях или тысячах секунд.
  • Изолирован: тест четко изолирует ошибку.
  • Повторяется: я могу запускать его повторно, и он будет проходить или терпеть неудачу одинаково каждый раз.
  • Самоуверенность: Тест однозначно пропускает.
  • Своевременно: Производится в блокировке с небольшими изменениями кода.

Карточка № 3: ядро ​​TDD

  • Красный: тест не работает
  • Зеленый: тестовые проходы
  • Рефакторинг: чистый код и тесты

Ответ 3

Широко используется так называемая xUnit. Он был первоначально разработан для Smalltalk как SUnit, разработанный в JUnit для Java, и теперь он имеет множество других реализаций, таких как NUnit для .Net. Это почти стандарт де-факто - если вы говорите, что используете модульные тесты, большинство других разработчиков предположит, что вы имеете в виду xUnit или подобное.

Ответ 4

Отличным ресурсом для "лучших практик" является Блог тестирования Google, например недавняя публикация на Написание тестового кода - фантастический ресурс. В частности, их еженедельные посты "Тестирование на туалет" отлично подходят для публикации вокруг вашего куба или туалета, поэтому вы всегда можете думать о тестировании.

Ответ 5

Семейство xUnit является основой модульного тестирования. Они интегрированы в Netbeans, Eclipse и многие другие IDE. Они предлагают простое, структурированное решение для модульного тестирования.

Одна вещь, которую я всегда стараюсь делать при написании теста, - это минимизация использования внешнего кода. Под этим я подразумеваю: я стараюсь как можно больше свести к минимуму код установки и разрыва для теста и стараюсь избегать использования как можно большего числа других модулей/блоков кода. Хорошо написанный модульный код не должен требовать слишком большого внешнего кода в его настройке и разрыве.

Ответ 6

NUnit - хороший инструмент для любого из языков .NET.

Единичные тесты могут быть использованы несколькими способами:

  • Test Logic
  • Увеличить разделение единиц кода. Если вы не можете полностью проверить функцию или раздел кода, то части, которые его составляют, слишком взаимозависимы.
  • Разработка приводов, некоторые люди пишут тесты, прежде чем писать код для тестирования. Это заставляет вас думать о том, что вы хотите, чтобы код выполнял, а затем дает вам определенное руководство, когда вы достигли этого.

Ответ 7

Не забывайте о поддержке рефакторинга. ReSharper на .NET обеспечивает автоматический рефакторинг и быстрые исправления недостающего кода. Это означает, что если вы пишете вызов того, чего не существует, ReSharper спросит, хотите ли вы создать недостающую часть.