Модульное тестирование с SpringJUnit4ClassRunner с использованием только @Component и @Autowired

У меня есть следующий класс:

@Component
public class MyClass {
    @Autowired MyPojo pojo;
}

Как я могу проверить это, не издеваясь над введенными бобами? У меня нет конфигурации [XML или декларативная]. Я сделал следующее:

@RunWith(SpringJUnit4ClassRunner.class)
@ComponentScan
public class MyClassTest {
    @Autowired MyClass myClass;

    @Test
    public void test() {
        this.myClass...()
    }
}

1 ответ

Решение

Если вы не хотите использовать какой-либо тип конфигурации, ни конфигурацию Java, ни XML, вы можете использовать @ContextConfiguration с вашими классами компонентов в списке:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { MyPojo.class, MyClass.class })
public class MyClassTest {

    @Autowired 
    private MyClass myClass;

    @Test
    public void test() {
        // myClass...
    }
}

Обратите внимание, что MyPojo класс также должен быть аннотирован @Component,

Однако в сценарии реальной жизни вам, вероятно, понадобится хотя бы один @Configuration класс (который также может быть использован с @ContextConfiguration).

Пожалуйста, обратитесь к документации Spring для получения дополнительной информации о поддержке Spring интеграционных тестов.

Другие вопросы по тегам