我想在测试中注入(inject) 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...autowired 成员必须在 bean 中定义。但据我所知,它是在带有 @Component 注释的 bean 中定义的。所有其他 bean 接线似乎都可以,因为 Spring 引导应用程序可以启动(当我注释掉测试类时)。
最佳答案
我换了
@RunWith(SpringJUnit4ClassRunner.class)
和
@SpringBootTest
@RunWith(SpringRunner.class)
这似乎工作正常:我看到 Spring 启动启动并加载 bean。我会暂时保留这个问题以获得更好的建议。
关于java - 使用 Autowiring 的 Spring Boot 字段注入(inject)在 JUnit 测试中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44787722/