2015-06-28 2 views
9

У меня есть вопрос об использовании 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

+0

В вашем тесте не содержится ничего, что требовало бы вмешательства Весны, поэтому, очевидно, вам это не нужно. –

+0

@SotiriosDelimanolis - Спасибо за ваш ответ. На самом деле это фиктивный код, похожий на код моего проекта. Фактически с самого начала он имел SpringJUnit4ClassRunner.class & ContextConfiguration ({"classpath: test-applicationContext.xml"}) в верхней части аннотаций класса и автообъекта на обоих объектах A & B. Не было насмешек. Я удалил их всех. Поэтому в основном я хочу знать, является ли это издевательством правильным способом выполнения Junits. Рамка Spring также поддерживает поддержку насмешек. Аса, показанная здесь, я использую библиотеку Mockito для издевательства над объектами. – Ayaskant

+0

Также думает по-другому. Нам действительно нужны библиотеки SpringJUnit4ClassRunner и Spring в Junits? – Ayaskant

ответ

-2

для модульных тестов нам не нужно весной, но нужно создать экземпляр часть контекста Spring для интеграции тестов, насмешливый/Integration слой доступа к данным. Вы можете использовать TestNG вместо JUnit и использовать любую из этих фреймворков в качестве проводки для интеграции и даже системных интеграционных тестов.

Смежные вопросы