95shuma / crm

3 stars 0 forks source link

Создать тесты для валидации для сервиса UserService #61

Closed TemirlanSadykov closed 4 years ago

TemirlanSadykov commented 4 years ago
kempl95 commented 4 years ago

После изученных материалов из различных источников и проведенных тестов были сделаны следующие выводы:

Например: when(placeRepo.save(user).thenReturn(что-либо);

В таком случае мы не можем протестировать, что именно вернет UserService.createUser() -> userRepo.save(user) так как при использовании mock мы сами укажем что именно надо вернуть

Изученные ссылки: http://crm.attractor-school.com/uploads/item/pdf/1822/02___Модульное_тестирование.pdf https://www.springboottutorial.com/spring-boot-unit-testing-and-mocking-with-mockito-and-junit https://www.baeldung.com/spring-boot-testing https://www.vogella.com/tutorials/Mockito/article.html https://www.baeldung.com/injecting-mocks-in-spring https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/testing.html https://habr.com/ru/post/169381/

kempl95 commented 4 years ago

Так как процесс создания тестов еще не завершен, прошу перенести тикет на следующий спринт. Фактическое время на данный момент: 13 часов. Причина: Искал правильный подход к выполнению поставленной задачи, затрачено время на тестирование и изучение подхода через Mock, использование которого не подходит к данной задаче по указанной выше причине.

kempl95 commented 4 years ago

Прошу перенести тикет на следующий спринт. Причина: Еще не закончил. Имеются ошибки. Основываясь на полученный опыт при работе над тикетом №73 переделал метод UserServiceTest на UserServiceTest.zip необходимо еще проверить точно ли срабатывает валидация при попытке сохранения неверных данных. Также столкнулся с ошибкой Unexpected exception type thrown ==> expected: <javax.xml.bind.ValidationException> but was: <java.lang.NullPointerException> Не могу запушить пока проблема не будет решена.

Фактически потраченое время: 3 часа

kempl95 commented 4 years ago

Один из вариантов решения ошибки NullPointerException, когда НЕ используется mock - https://www.eviltester.com/2017/08/faq-null-pointer-exception.html https://www.youtube.com/watch?v=Vqa_A2uuZPE&feature=emb_logo - Здесь также рассказывается о правильном подходе написания тестов: Сначала пишется работоспособный @Test, потом уже выносятся общие переменные в @Before и т.д.

kempl95 commented 4 years ago

Решение ошибки NullPointerException, указанная в комментарии решилась тем, что при импортировании аннотации @Test указывалось import org.junit.Test;, а должно было import org.junit.jupiter.api.Test;

при import org.junit.Test @Autowired UserService не создается этот объект и получается userServise = null Он и вызывает ошибку

image

kempl95 commented 4 years ago

Успешный тест на @SpringBootTest сохранял в БД, поэтому искал подход без сохранения. https://www.freecodecamp.org/news/unit-testing-services-endpoints-and-repositories-in-spring-boot-4b7d9dc2b772/

В ходе изучения столкнулся с ошибками. Далее будут описаны в коммитах.

Изучение окончено. Создал корректный вариант теста сервиса UserService. Фактически потраченное время на изучение и создание правильного тестового метода через @Mock во время Sprint 6 - 8 часов

kempl95 commented 4 years ago

Итоговое фактически потраченное время Sprint 6: 9 часов (1 час создания коммитов и 8 часов изучение и создание)

kempl95 commented 4 years ago

После обсуждений с аналитиком решили добавить Assertions