Аннотация @Spy в JUnit, особенно при использовании с Mockito, применяется для создания шпионажа за реальным объектом. Шпион — это частичный макет, что означает, что вы можете имитировать некоторые методы объекта, сохраняя при этом реальное поведение других методов.
Вот несколько распространенных вариантов использования аннотации @Spy:
Частичное издевательство:
@Spy private ListspyList = new ArrayList(); @Test public void testSpy() { spyList.add("Mockito"); Mockito.verify(spyList).add("Mockito"); assertEquals(1, spyList.size()); Mockito.doReturn(100).when(spyList).size(); assertEquals(100, spyList.size()); }
Переопределение реального поведения метода:
@Spy private MyClass myClass = new MyClass(); @Test public void testSpyWithMethodOverride() { Mockito.doReturn("Mocked Value").when(myClass).someMethod(); assertEquals("Mocked Value", myClass.someMethod()); }
Проверка вызовов методов:
@Spy private MyClass myClass = new MyClass(); @Test public void testMethodCallVerification() { myClass.someMethod(); Mockito.verify(myClass).someMethod(); }
Объединение с @InjectMocks:
@Spy private MyDependency dependency; @InjectMocks private MyService service; @Test public void testService() { Mockito.doReturn("Mocked Result").when(dependency).doSomething(); assertEquals("Mocked Result", service.performAction()); }
Тестирование устаревшего кода:
Подводя итог, аннотация @Spy полезна, когда вам нужно контролировать или проверять определенное поведение реального объекта, сохраняя при этом остальную часть поведения объекта неизменной.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3