【发布时间】:2018-07-22 16:17:35
【问题描述】:
当我使用以下注释启动我的 test 时:
package com.hello.package.p1;
@RunWith(SpringRunner.class)
@DataMongoTest
@SpringBootTest
public class ClassATest {
@Autowired
Service1 serivce1; //fqn = com.hello.package.p1.Service1
@Autowired
Service2 serivce2; //fqn = com.hello.package.p2.Service2
...}
package com.hello.package.p1;
@ActiveProfiles("test")
@SpringBootConfiguration
public class MongoTestConfig {
...
}
service1 将被注入。但 service2 不会,因为它与测试类不在同一个包中。我收到一个错误:
通过字段'service2'表示的不满足的依赖关系;嵌套的 例外是 org.springframework.beans.factory.NoSuchBeanDefinitionException
如何告诉我的测试上下文我想加载/扫描某个包,例如com.hello?
【问题讨论】:
-
您也可以添加您的主要
SpringBootApplication吗?您可以将ComponentScan添加到测试并指定,但理想情况下您应该让SpringBootApplication为您完成。此外,您正在混合切片测试和完整启动测试,在大多数情况下您应该选择其中一个。 -
@DarrenForsythe 我已经添加了@ComponentScan(basePackages = {"com.hello.package.p1", "com.hello.package.p2"}) 并且有效!谢谢!
标签: spring-boot spring-data spring-test