Как загрузить конфигурацию пользовательских тестов Springboot для конкретных тестов - PullRequest
1 голос
/ 01 апреля 2020

У меня есть два теста пружинного джунта, которые требуют разных конфигураций. Они следующие:

package some.pkg.name;

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = {Test1.ContextConfig.class})
public class Test1 {

    @Test
    public void test1() {
        // do something
    }

    @Configuration
    @ComponentScan("some.pkg.name")
    public static class ContextConfig {
        // bean definitions here
    }
}


package some.pkg.name;

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = {Test2.ContextConfig.class})
public class Test2 {

    @Test
    public void test2() {
        // do something
    }

    @Configuration
    public static class ContextConfig {
        // bean definitions here
    }
}

Когда я запускаю Test1, я получаю бины Test1 и бобы Test2. Я был на это некоторое время, но не могу понять это. Что я делаю неправильно? Я попытался поместить классы конфигурации в их собственный пакет, но это не сработало. В Test1 мне нужно сканирование компонентов Spring, в Test2 бобы создаются «вручную». Компонент сканирования по умолчанию для проекта some.pkg.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Если вам нужны bean-компоненты для сканирования основных компонентов приложения Spring, не указывайте пользовательскую конфигурацию для этого класса тестирования

@RunWith(SpringRunner.class)
@SpringBootTest
public class Test1 {

    @Test
    public void test1() {
       // do something
    }

}


@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = {Test2.ContextConfig.class})
public class Test2 {

    @Test
    public void test2() {
       // do something
    }

    @Configuration
    public static class ContextConfig {
      // bean definitions here
    }
}
0 голосов
/ 02 апреля 2020

Проблема была решена путем помещения классов конфигурации вне проверки компонента, например:

package some.pkg.name;

import some.config.ContextConfigTest1;

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = ContextConfigTest1.class)
public class Test1 {

    @Test
    public void test1() {
        // do something
    }

}


package some.pkg.name;

import some.config.ContextConfigTest2;

@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes = ContextConfigTest2.class)
public class Test2 {

    @Test
    public void test2() {
        // do something
    }
}


package some.config;

@Configuration
public class ContextConfigTest2 {
    // bean definitions here
}

package some.config;

@Configuration
@ComponentScan("some.pkg.name")
public class ContextConfigTest1 {
    // bean definitions here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...