春季启动测试:如何仅使用某些Bean?

问题描述

我有一堆豆子的Spring Boot应用程序。他们的数量每天都在增加。因此,所有需要模拟新bean或测试的时间都会失败。因此,问题很简单:如何强制进行Spring Boot测试仅使用应用程序上下文中的某些特定bean,而不使用全部

解决方法

所以,我弄清楚了:您需要在测试包中创建类,然后指向测试类以从那里运行spring,并且必须定义需要扫描哪些包中的组件。为此,请使用前缀scanBasePackages或注释@ComponentScan(“ packageForScan”)

@SpringBootApplication(scanBasePackages = {"com.domain.folder1.package1","com.domain.folder1.package2"})
    public static class CustomApplicationRunner {
        public static void main(String[] args) {
            SpringApplication.run(CustomApplicationRunner.class,args);
        }
    }

在测试类中,您必须将此类指定为运行应用程序的主要类。

@SpringBootTest(classes = MyTestClass.CustomApplicationRunner.class)
@RunWith(SpringRunner.class)
public class MyTestClass {//tests}

这是您可以包括或排除(带有@ComponentScan注释)任何程序包不添加到应用程序上下文中的方法。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...