3 / 3 / 2
Регистрация: 31.07.2017
Сообщений: 29
|
|
1 | |
Как правильно тестировать в JUNIT27.11.2017, 12:25. Показов 1132. Ответов 7
Метки нет (Все метки)
Привет!
Написал сетевой чат, теперь стоит задача сделать к нему юнит тесты. Насколько я понял, юнит тесты должны затрагивать только тестируемую логику и подтягивать как можно меньше зависимостей. Например, у меня есть класс Client, который логинится к серверу и соответственно шлет и принимает от него сообщения. Для общения с сервером выделен отдельный класс ConnectionToServer, реализующий транспортный уровень. Так вот, когда я тестирую методы класса Client, то работу ConnectionToServer я эмулирую. Т.е делаю класс наследник, который не ведет прямое общение с сервером, а просто как-то обрабатывает отсылку и прием сообщений, чтобы это было понятно для логики Client. А если я хочу протестировать класс ConnectionToServer, то мне необходимо уже создавать реальный экземпляр сервера и с ним работать или точно также вводить какую-то симуляцию? Извиняйте за сумбур, раньше тесты не делал. Пока немного каша с Mock и Stub в голове.
0
|
27.11.2017, 12:25 | |
Ответы с готовыми решениями:
7
Junit тесты: как правильно реализовать проверку метода findAll? Как тестировать xpages? Как тестировать втаких условиях Разработать класс-контейнер. Как тестировать? |
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
|
|
27.11.2017, 12:38 | 2 |
Mock'и для того и сделаны, что бы не делать
Делаешь Mock ConnectionToServer'а при тестировании Client'а, и для всех методов, которые использует Client, "замокиваешь" поведение. Точно так же мокаешь, все что используется при тестировании.
1
|
3 / 3 / 2
Регистрация: 31.07.2017
Сообщений: 29
|
|||||||||||
27.11.2017, 15:11 [ТС] | 3 | ||||||||||
Пытаюсь переделать через мок-объекты.
Есть тестируемый метод login:
java.lang.AssertionError at org.junit.Assert.fail(Assert.java:86) at org.junit.Assert.assertTrue(Assert.java:41) at org.junit.Assert.assertTrue(Assert.java:52) Что тут неверно сделано?
0
|
27.11.2017, 16:33 | 4 | |||||||||||||||||||||||||
Да что угодно может быть. Смотря как вы замокали объект, да и вообще как у вас сделано. Вот я на основе ваших кусков сделал синтетику. Посмотрите как замокано здесь (идея в том, что тестируемый объект -- клиент, соответственно операционный кусок -- соединение, замокано так, чтобы давать истину на вашем тесте):
1
|
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
|
|
27.11.2017, 16:35 | 5 |
evggen0904, смотрите у себя строки 41 и 52. Ожидали true, получили false.
У Вас в mock'e connection2 isConnected() как думаете что вернет?
2
|
3 / 3 / 2
Регистрация: 31.07.2017
Сообщений: 29
|
|
27.11.2017, 17:01 [ТС] | 6 |
Я, вероятно, не очень понятно выразился. То как вы реализовали mock, я сделал в самом начале и тест у меня отработал корректно. А вот реализовать тоже самое при помощи фрэймворка Mockito не получается.
Добавлено через 4 минуты Разобрался! Всем спасибо! нужно было замокать выполнение метода isConnected.
0
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
27.11.2017, 18:08 | 7 |
дебаггер включи и посмотри
0
|
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
|
|
28.11.2017, 06:14 | 8 |
0
|
28.11.2017, 06:14 | |
28.11.2017, 06:14 | |
Помогаю со студенческими работами здесь
8
Как на локальной машине тестировать ASP? Как тестировать клиент-серверные приложения? Как тестировать для iphone/Android Как тестировать Asp.net приложения Как одновременно тестировать код на разных ЯП? Как тестировать скрипты PHP с использованием XAMPP? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |