Я новичок в модульном тестировании, у меня есть один веб-метод REST, который просто вызывает DB и заполняет DTO. Псевдокод
public object GetCustomer(int id)
{
CustomerDTO objCust = //get from DB
return objCust;
}
Я сомневаюсь, как написать тесты для этих методов и типы тестов (интеграция / модуль), которые будут включены. А для юнит-тестов нужно ли попадать в БД. Если это так, и я передаю идентификатор клиента и делаю несколько утверждений, данные могут измениться, что в итоге приведет к сбоям.
Я думаю, что я чего-то здесь не понимаю, понимая эти понятия.
testing
unit-testing
rest
integration-tests
Солнечный
источник
источник
Ответы:
Во время модульного тестирования от вас не ожидается тестирования с базой данных или, по крайней мере, с базой данных, которую вы не подготовили для модульного тестирования. Тестирование с использованием базы данных и, следовательно, одновременное тестирование различных уровней вашего приложения обычно рассматривается как интеграционные тесты . С помощью модульных тестов вы должны тестировать только то, что делает ваш метод, что он возвращает в зависимости от различных параметров, и когда (или нет) он должен потерпеть неудачу.
Очень ожидаемо, что в вашем методе вы делаете вызовы методов X из других классов. Вы не испытывать эти X методов так , что вы должны сделать , это высмеивать эти методы.
Я предполагаю, что вы пишете свой код на Java, в этом случае у вас есть отличные фреймворки, такие как Mockito, которые могут быть вам полезны. Независимо от того, используете ли вы фреймворк или нет, я просто скажу, что они сэкономят вам много времени, и тот, который я упомянул, по крайней мере, не сложен.
Если вы просто хотите написать свой собственный макет для эксперимента, то предположим, что у вас есть следующий
CustomerRepository
класс:Вы можете написать свой собственный издевательский и грязный
CustomerRepository
класс следующим образом:Затем в вашем тестовом примере вы в основном заменяете свой «стандартный» экземпляр
CustomerRepository
на макетированный экземпляр, который позволит вам протестировать ваш метод для различных результатовgetCustomer
:Как правило, каждый метод тестирования должен проверять только одну вещь, это помогает сделать ваши тесты небольшими и сфокусированными на одной задаче.
Я собираюсь повторить это :-) Как вы видите, написание целого издевательского класса занимает некоторое время. Подумайте об использовании фальшивого фреймворка: чем меньше вы пишете код, тем меньше ошибок делаете , верно? Насмешка над методом, который выдает исключение или возвращает заданное значение для заданного параметра, - это кусок пирога и занимает 2 или 3 строки (по крайней мере, с mockito)
Надеюсь, это поможет проверить ваш метод REST.
источник