Весенний тест: Избегайте загрузки класса конфигурации при тестировании - PullRequest
0 голосов
/ 24 сентября 2018

Это аннотированный класс Spring @Configuration, который я использую в своем проекте весенней загрузки:

@Configuration
@ImportResource({ 
    "classpath:cat/gencat/ctti/canigo/arch/web/rs/config/canigo-web-rs.xml",
    "classpath:cat/gencat/ctti/canigo/arch/core/i18n/config/canigo-core-i18n.xml"
})
public class WebServicesConfiguration {

Как вы видите, я импортирую объявленные сторонние ресурсы.

Тем не менее, я стараюсь не импортировать их в свои тесты.В настоящее время я пытаюсь создать тесты для проверки связи с базой данных.Мне не нужно загружать эти ресурсы.

Как я могу его получить?

Вот мой фрагмент кода:

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

    @Autowired
    private MongoTemplate mongoTemplate;

Итак, я хочу избежатьзагрузка WebServicesConfiguration класса конфигурации при запуске ModelTest.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы можете использовать Spring Profiles для реализации вашего сценария.

Прежде всего, добавьте аннотацию профиля в ваши конфигурации.Обратите внимание, что вы можете добавить несколько профилей в одну конфигурацию (как показано ниже), и эта конфигурация будет применена, если любой из указанных профилей активен.

@Configuration
@ImportResource({ 
    "classpath:cat/gencat/ctti/canigo/arch/web/rs/config/canigo-web-rs.xml",
    "classpath:cat/gencat/ctti/canigo/arch/core/i18n/config/canigo-core-i18n.xml"
})
@Profile(value = {"dev", "prod"})
public class WebServicesConfiguration {

}

Тогдана вашей стороне теста определите, какие профили вы хотите активировать для теста.

@RunWith(SpringRunner.class)
@SpringBootTest() 
@ActiveProfiles(profiles = {"test"})
public class ModelTest {

    @Autowired
    private MongoTemplate mongoTemplate;

}
0 голосов
/ 24 сентября 2018

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

@SpringBootTest(classes = ApplicationTest.class)
public class ModelTest {

    @Autowired
    private MongoTemplate mongoTemplate;
}
...