我试过解决这个非常相似的问题,但没有运气。
在spring引导测试中为组件扫描配置基本包
除了主应用程序类的包之外,我还有其他包中的bean,但是spring引导测试无法加载它们。
其中一些bean是jpa接口或使用这些接口的类。
主应用程序类:
@SpringBootApplication(scanBasePackages = {packages names here...})
@EnableJpaRepositories(basePackages = packages names here...)
@EntityScan(packages names here...)
public class MyApp {
public static void main(String[] args) {
SpringApplication.run(MyApp.class, args);
}
}
测试等级:
@SpringBootTest
@ContextConfiguration(classes = MyApp.TestConfig.class)
class MyAppTests {
@Test
void contextLoads() {
}
@ComponentScan(basePackages = packages names here...)
@EnableJpaRepositories(basePackages = packages names here...)
@EntityScan(packages names here...)
public static class TestConfig{
}
}
错误:
Parameter 0 of constructor in ..."some package other than main one"... required a bean of type ...
注:
包也在不同的模块中
主应用程序正常运行,来自不同模块的不同包的bean正常加载
编辑:
基于@nathanhughes的建议,我在其他包中创建了一个marker接口:
package <my other package which is not not in same module with main package...>;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan
public interface Config {
}
现在在测试课上:
@SpringBootTest
//@ContextConfiguration(classes = Config.class) //doesn't work
//@Import(Config.class) //doesn't work
class AuthServerApplicationTests {
@Test
void contextLoads() {
}
}
暂无答案!
目前还没有任何答案,快来回答吧!