java—如何在spring引导测试中扫描其他包中的组件?

62o28rlo  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(251)

我试过解决这个非常相似的问题,但没有运气。
在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() {
    }

}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题