我想在测试中注入DeMorgenArticleScraper .
@RunWith(SpringJUnit4ClassRunner.class)
public class DeMorgenArticleScraperTest {
@Autowired
private DeMorgenArticleScraper deMorgenArticleScraper;
...
}
DeMorgenArticleScraper组件有自己的一些配置,但IDE /编译器并没有抱怨它们 .
@Component
public class DeMorgenArticleScraper extends NewsPaperArticleScraper {
@Autowired
public DeMorgenArticleScraper(
@Qualifier("deMorgenSelectorContainer") SelectorContainer selector,
GenericArticleScraper genericArticleScraper,
@Qualifier("deMorgenCompany") Company company) {
super(selector, genericArticleScraper, company);
}
...
}
使用@Qualifier注释的构造函数参数在带有@Bean的Config.class中定义 . 该类本身具有@Configuration . 我认为问题不在这里 .
IDE已经警告我,没有找到bean ...必须在bean中定义自动成员 . 但据我所知,它是在带有@Component注释的bean中定义的 . 所有其他bean接线似乎都可以,因为Spring启动应用程序可以启动(当我注释掉测试类时) .
2 回答
@SpringBootTest
是相当重量级的,并且对于所有意图和目的都将加载整个应用程序,1128578,它相当重量级并且显着影响测试时间 . 根据您要测试的内容,您可能需要查看切片测试,例如
@JsonTest
,@DataJpaTest
,@WebMvcTest
等,https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications-testing-autoconfigured-tests . 这些测试的好处不仅在于它们不会加载所有内容,因此速度更快,而是会尝试搜索相关配置 .普通旧
@ContextConfiguration
并指向需要加载测试所需的相关@Configuration
https://docs.spring.io/spring/docs/current/spring-framework-reference/testing.html#contextconfiguration我换了
同
这似乎工作正常:我看到Spring引导启动并加载bean . 我会暂时搁置这个问题以获得更好的建议 .