Модульное тестирование (C #) - PullRequest
2 голосов
/ 10 января 2011

Я тестирую некоторые операции CRUD.Мои вопросы:

1) Если мне нужно проверить методы Add, Get и Delete.Постоянный слой - это база данных.Так как мне нужно иметь тестовый объект для Get и Delete, я должен объединить все 3 из них в один [TestMethod] или разделить их на 3 метода и повторно добавить объект перед тестами Get и Delete?

Ответы [ 5 ]

4 голосов
/ 10 января 2011

В идеале у вас должны быть индивидуальные тесты для каждого случая.

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

Таким образом, чтобы проверить добавление, вы должны начать с пустой базы данных, а затем добавить новые данные, попытаться снова добавить те же данные (они должны потерпеть неудачу), добавить неполные данные и т. Д.

Затем проверитьи удалить вы начнете с предварительно заполненной базы данных и выполните различные необходимые вам тесты.

2 голосов
/ 10 января 2011

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

Теперь, если вы используете третью часть ORM для работы с CRUD, вам вообще не следует тестировать инструмент, если вы ему не доверяете. Но в этом случае вы должны найти лучшую альтернативу. :)

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

2 голосов
/ 10 января 2011

Я бы вообще сделал отдельный тест. Если я тестирую метод типа "get", тестовая установка вставит объект (обычно с помощью некоторой фиктивной среды), который я ожидаю получить по мере необходимости, просто не будет утверждаться так же, как фактический метод get будет.

Это означает, что, если реализация add прервется, оба теста для get и add так или иначе не пройдут, при условии надлежащего покрытия. Но это все равно что ты хочешь, верно?

1 голос
/ 10 января 2011

Привет :) Я бы отделился и проверил бы индивидуально, а затем настроил бы чистоту и очищал после каждого.

1 голос
/ 10 января 2011

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

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