2013-03-08 2 views
3

Должен ли я писать модульный тест для каждого общедоступного метода? Например, у меня есть служба CRUD, поэтому у меня есть методы create, read, update, delete. Но когда я пишу тест delete или update методов, я неявно проверить read и create методы (например, для проверки методы update первой мне нужно создать объект (create), а затем получить его (read), затем update его, а затем извлечь его снова, чтобы убедиться, что он изменился).Должен ли я писать модульный тест для каждого публичного метода?

+0

поясните, почему этот вопрос не является конструктивным? – MyTitle

+0

Вы должны проверить все, что требует тестирования. Лично я бы проверил каждый случай здесь, просто чтобы подтвердить комбинацию, а также отдельные операции. –

+0

Это не конструктивно в том смысле, что этот вопрос заканчивается в дебатах. Это не дискуссионный сайт. –

ответ

5

Я бы писать тесты для get и create, да:

  • Это облегчает отдельное поведение вы намеренно тестирования от поведения вы кстати тестирование
  • Это делает его легче проверить условия отказа и другие сценарии, которые не подпадают под ваши другие методы
  • Это означает, что если вы изменили свою реализацию delete/update в не использование get/create, вы по-прежнему испытывать get/create

В идеале, я бы попытаться (без получения слишком повесил об этом), чтобы сделать тесты, установленные и проверить данные на «нижний» уровень - например обеспечивая прямой доступ к базе данных в памяти. Таким образом, вы действительно тестируете «Если я создаю сущность, данные в базе данных выглядят как {this}» (а также при извлечении). Просто быть в состоянии создать, а затем получить те же результаты снова хорошо с точки зрения черный ящик тестирования, но я обычно думаю, модульные тесты, как больше белого ящика.

1

Должен ли я писать модульный тест для каждого общедоступного метода? Да

Написание тестового примера для каждого публичного метода - лучшая вещь. Для тестирования удалите операцию, вы должны позвонить сначала создать тест, а затем позвонить удалить тест метод. Таким образом, ваш метод проверки на удаление будет независимым, и вы сможете протестировать все возможные сценарии.

+0

'вы должны сначала вызвать создание теста, а затем вызвать метод проверки удаления' .. хм .. действительно ли мои методы тестирования должны зависеть друг от друга? – MyTitle

+0

нет..в этом случае создание как setup. Вы просто гарантируете, что объект, который вы хотите удалить, действительно доступен. –

Смежные вопросы