Должны ли тесты, включающие модульный тест, выполняться в определенном порядке? - PullRequest
3 голосов
/ 04 декабря 2010

Это характерно для любого языка, на котором выполняется модульное тестирование.

Большинство библиотек модульных тестов предоставляют способ управления порядком, в котором выполняются модульные тесты.Допустим, у меня есть TestClass, который определяет двенадцать тестов.Есть ли веская причина попытаться контролировать порядок выполнения двенадцати испытаний?Имейте в виду, что о любом коде запуска / завершения работы уже позаботились, потому что большинство библиотек предоставляют способ сделать это.Я вижу преимущество в том, что у меня есть явный порядок тестирования: вы можете составлять свои тесты, чтобы каждый из них использовал только те функции, которые он тестирует напрямую или уже был протестирован в предыдущем тесте.Недостатком является стоимость обслуживания для поддержания порядка в актуальном состоянии и обеспечения того, чтобы другие разработчики понимали, почему заказ был таким, и работали над его сохранением.

Разве это не стоит усилий?

Ответы [ 2 ]

5 голосов
/ 04 декабря 2010

Это не стоит усилий. Более того, это не очень хорошая практика. Каждый модульный тест должен выполняться независимо от других. Если один из ваших тестов зависит от того, что другой выполняется первым, это не очень хороший тест.

Что касается использования только тех функций, которые были протестированы другим тестом, вам не нужно «заказывать» тесты для достижения этой цели. Допустим, у вас есть часть базовой логики, и для этой логики есть тест (Тест А). Вы тестируете более сложную часть логики в новом Тесте B, и этот новый тест предполагает, что базовая логика работает. Если позже что-то пойдет не так с основной логикой, тест A не пройден, и тест B также может не пройти. Это хорошо. Тест А определит проблему, чтобы вы могли ее исправить. Неважно, в каком порядке выполняются тесты.

1 голос
/ 04 декабря 2010

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

Я не вижу здесь большого преимущества.Кроме того, зависимость часто распространяется по классам, поэтому попытка упорядочить прогоны тестов по зависимостям функций, вероятно, распространилась бы по нескольким классам тестов, поэтому порядок выполнения в одном классе тестов не охватил бы это.

...