![](/img/trans.png)
[英]Java Spring Boot Test: How to exclude java configuration class from test context
[英]How to test @Configuration class in Spring without starting up whole context?
如何在不啟動整個 Spring 上下文 class 的情況下測試我的配置,還是應該這樣做?
@Configuration
public class GaRuConfig {
@Bean
public List<GaRu> rules(){
SSRule rule1 = new SSRule();
CSRule rule2 = new CSRule();
DGRule rule3 = new DGRule();
EGRule rule4 = new EGRule();
return List.of(rule1, rule2, rule3, rule4);
}
}
有沒有辦法測試這個 class?
使用AssertJ ,您可以執行以下操作:
public class GaRuConfigTest {
private GaRuConfig gaRuConfig = new GaRuConfig();
@Test
public void shouldReturnCorrectListOfRulesWhenRequested() {
// Act
List<GaRu> rules = this.gaRuConfig.rules();
// Assert
Assertions.assertThat(rules.stream().filter(rule -> SSRule.class == rule.getClass()).collect(Collectors.toList())).isNotEmpty();
Assertions.assertThat(rules.stream().filter(rule -> CSRule.class == rule.getClass()).collect(Collectors.toList())).isNotEmpty();
Assertions.assertThat(rules.stream().filter(rule -> DGRule.class == rule.getClass()).collect(Collectors.toList())).isNotEmpty();
Assertions.assertThat(rules.stream().filter(rule -> EGRule.class == rule.getClass()).collect(Collectors.toList())).isNotEmpty();
}
}
您可以僅使用一個(或幾個)配置類啟動 Spring 上下文:
@SpringBootTest
@ContextConfiguration(classes = GaRuConfig.class)
public class GaRuConfigTest {
@Autowired
private List<GaRu> rules
@Test
public void testSomething() {
// assertion on the rules
}
}
這只會啟動具有該配置 class 的 ApplicationContext。
如果您想測試您的配置是否與 Spring 基礎設施結合使用(在您的示例中不是這種情況),這將特別有用。 通過該測試,您可以驗證是否存在List<GaRu>
類型的 bean,並且可以將其自動裝配到其他類中。
只啟動應用程序的一部分(與整個應用程序相比)更便宜,並且您仍然可以檢查這部分是否正確自動裝配,可能使用特定的@TestConfiguration
而不是您的生產性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.