Я довольно новичок в мокито-фреймворке.Я читал несколько уроков по этому поводу.Один из них, за которым я следовал, таков: https://www.tutorialspoint.com/mockito/mockito_first_application.htm
Есть заявление, создающее макет Службы акций.
In this example, we've created a mock of Stock Service to get the dummy price of some stocks
Мой вопрос Stock Service
a real service class
или mock service class
Вы должны вручную встать для имитации реального класса обслуживания.Я немного смущен.Имея базовое понимание основ Junit.То, что я практиковал раньше, было, если есть класс обслуживания Foo
, тогда я использовал реальный класс, который предоставляет все доступные методы.
public class Foo {
public Foo() { } // construtor
public String returnAddress(String userId) {
// ...
return dataAccesobj.getAddress(userId);
}
}
Вызов foo.returnAddress(..)
в модульном тесте, если я правильно помню.
Причина, по которой я задаю этот вопрос, заключается в том, что, работая с mockito
над созданием метода тестирования для класса, я столкнулся с уникальным (?) Испытанием.
Я начал среальный класс обслуживания, который зависит от своего конструктора суперкласса для возврата своего экземпляра.Проблема, с которой я столкнулся, заключалась в том, что этот конструктор суперкласса инициирует соединение с БД и загрузку / разбор файлов свойств, которые мне не нужны для моего теста.Я думал о том, как предотвратить подключение к БД и загрузку / чтение файлов пропов ....
Мне показалось, что я прочитал одно из mockito
учебных пособий, в которых можно изолировать тестирование, не имея таких сервисов.Я пробовал с @Mock
и @Spy
(не до конца понимая, для чего они нужны ...), но это не имело значения для вывода (возможно, я неправильно использовал эти аннотации).
Итак, я фактически создал класс fake / mock из реального класса обслуживания (например, Foo
), просто скопировав его и переименовав в FooMock
и поместив в папку src/test/java
, где находится модуль.тестовый класс работает с.Я держал класс mock точно таким же, как и реальный класс обслуживания, за исключением удаления ненужной логики, такой как db connection
или loading/reading prop file for env specific
.Сделав это, я смог протестировать один из открытых методов, которые читают каталог ldap ...
Извините, я отвлекся, но надеюсь, что моя точка зрения ясна на данный момент.Я не уверен, что то, как я справился с этой ситуацией, правильно или неправильно.Я был бы признателен опытным инженерам, которые бы разъяснили, как я справляюсь с вопросом, приемлемо mockito
или нет.Если нет, то, пожалуйста, посоветуйте мне лучший способ справиться с этим.