我有以下结构;
主配置类;
@TestConfiguration
@Import({MainApplication.class, ConfigA.class, ConfigB.class})
public class MainTestConfiguration {
}
和两个独立的配置类;
@TestConfiguration
public class ConfigA {
@Bean
public EtcDao etcDao() {
// return custom etcDao
}
}
@TestConfiguration
public class ConfigB {
@Bean
public SomeBean someBean() {
// return custom someBean
}
}
测试如下;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainTestConfiguration.class)
public class MotherTest {
@Test
public void test() {
// test
}
}
使用这种结构,我对 bean 的测试定义EtcDao
和SomeBean
被忽略,并且使用这些 bean 的主要上下文定义(来自MainApplication.class
)。@SpringBootTest
但是,如果我在like中包含这些单独的配置@SpringBootTest(classes = {ConfigA.class, ConfigB.class})
,那么它可以正常工作。不允许@Include
初始化这些单独的配置类中的 bean?或者罪魁祸首是我MainApplication.class
和他们一起包含,但我需要其他配置,所以我必须以这种方式实现。