次の構造があります。
メイン構成クラス。
@TestConfiguration
@Import({MainApplication.class, ConfigA.class, ConfigB.class})
public class MainTestConfiguration {
}
そして、2 つの別個の構成クラス。
@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
}
}
この構造では、BeanEtcDao
とのテスト定義SomeBean
は無視され、これらの Bean のメイン コンテキスト定義が使用されます (からMainApplication.class
)。@SpringBootTest
しかし、これらの個別の構成をlikeに含めると、@SpringBootTest(classes = {ConfigA.class, ConfigB.class})
適切に機能します。@Include
これらの個々の構成クラスの Bean を初期化できませんか? MainApplication.class
または、犯人はそれらと一緒に含めることですが、そこから他の構成が必要なので、この方法で実装する必要がありました。