Как узнать, подходит ли ваш юнит-тест "правильного размера"? - PullRequest
1 голос
/ 13 мая 2010

Одна вещь, которую я всегда замечал в своих модульных тестах, это то, что они становятся многословными; видя, что они также могут быть недостаточно многословными, как вы понимаете, когда ваши модульные тесты имеют правильный размер?

Я знаю хорошую цитату для этого, и это:

"Совершенство достигается не тогда, когда нечего добавить, но когда больше нечего убрать ". - Антуан де Сент-Экзюпери.

Ответы [ 3 ]

3 голосов
/ 13 мая 2010

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

Написание таких детальных тестов означает, что если вы не будете осторожны, вы продублируете лот кода настройки / разборки, и это то, на что вам нужно потратить время, абстрагируя его вне (любым подходящим способом).

1 голос
/ 13 мая 2010

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

0 голосов
/ 13 мая 2010

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

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

Редактировать В ответ на ваши изменения: я не ищу совершенства в модульных тестах.

...