这是我在Spring Boot项目中使用的带有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
配置类。
有什么想法吗?
答案 0 :(得分:2)
您可以使用 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;
}
答案 1 :(得分:0)
您可以为所有测试创建单独的配置,并将其命名为ApplicationTest。在测试中,您需要使用以下代码进行指定:
@SpringBootTest(classes = ApplicationTest.class)
public class ModelTest {
@Autowired
private MongoTemplate mongoTemplate;
}