У меня есть вопрос об использовании SpringJUnit4ClassRunner
. Для чистых тестов Junits или Unit Test мы должны использовать аннотации Spring, такие как @Autowired
, а также SpringJUnit4ClassRunner
или использовать только MockitoJUnitRunner
вместо аннотации @RunWith
в верхней части тестового класса?Использование MockitoJUnitRunner.class вместо SpringJUnit4ClassRunner.class
Я имею в виду замена
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:test-applicationContext.xml" })
только с
@RunWith(MockitoJUnitRunner.class)
в верхней части класса. Меня устраивает.
В Junits мы обычно не совершаем внешние вызовы, такие как звонки в БД или вызов какой-либо другой веб-службы. Мы должны издеваться над этими внешними вызовами, используя аннотации @Mock
на этих объектах службы. А затем создайте реальный объект класса, который мы тестируем, и это зависит от этих макетов. Затем мы можем использовать @InjectMocks
на реальном объекте, чтобы он вводился с издеваемыми объектами.
Пример Сервис-А-> звонки-> Сервис-B-> звонки-> Сервис-С
В то время тестирования мы должны издеваться Service B & во время тестирования Сервис-Б мы должны издеваться Service-C.
Некоторый код сниппета
@RunWith(MockitoJUnitRunner.class)
public class TestServiceA {
@Mock
B mockObj;
@InjectMocks
A realObj;
@Test
public void testServiceA() {
.....
.....
}
}
Таким образом, я считаю, для тестовых случаев Unit мы не должны полагаться на Spring контейнере, чтобы обеспечить нам экземпляр класса тестируется.
Просьба представить свои предложения.
Использование SpringJUnit4ClassRunner.class вместо MockitoJUnitRunner.class
В вашем тесте не содержится ничего, что требовало бы вмешательства Весны, поэтому, очевидно, вам это не нужно. –
@SotiriosDelimanolis - Спасибо за ваш ответ. На самом деле это фиктивный код, похожий на код моего проекта. Фактически с самого начала он имел SpringJUnit4ClassRunner.class & ContextConfiguration ({"classpath: test-applicationContext.xml"}) в верхней части аннотаций класса и автообъекта на обоих объектах A & B. Не было насмешек. Я удалил их всех. Поэтому в основном я хочу знать, является ли это издевательством правильным способом выполнения Junits. Рамка Spring также поддерживает поддержку насмешек. Аса, показанная здесь, я использую библиотеку Mockito для издевательства над объектами. – Ayaskant
Также думает по-другому. Нам действительно нужны библиотеки SpringJUnit4ClassRunner и Spring в Junits? – Ayaskant