今天碰到一个问题,写测试类的时候,与项目中的某个bean有冲突,必须排除。

那么我们在使用 spring boot test  写测试类的时候,怎么去排除指定的bean呢?

假如项目中有一个StudentBean

@Component
public class StudentBean {
    private static final AppLogger logger = AppLoggerFactory.getLogger(StudentBean.class);
    @PostConstruct
    public void init(){
        logger.info("加载学生信息");

当我们写测试类的时候,启动项目的时候会自动扫描@Component。

我们不想去使用 StudentBean的 @PostConstruct 方法,就必须排除这个Bean,模拟一个新的StudentBean。

排除项目中的StudentBean,如何做?很简单就是用 

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
</dependency>

依赖下的 @MockBean注解,测试类排除原来项目中的StudentBean,模拟一个新的 StudentBean

@RunWith(SpringRunner.class)
@SpringBootTest(classes = TestApplication.class)
@Slf4j
public class BaseJunit {
    @MockBean
    private StudentBean bean;

文章参考:stackoverflow 链接

 类似 @MockXX 注解使用请自行搜索

文章目录Sprint Boot Test 系列2 - 测试Web层前言测试Web层启动server来测试加载mock的Application Context来测试加载Web层来测试Mock Service层测试Web层小结参考文档 Sprint Boot Test 系列2 - 测试Web层 本文为Spring Boot Test系列的第二篇的测试Web层。 前置文章: Sprint Boot Test 系列1 - 入门 测试Web层 启动server来测试 测试Web层的一种方式是启动server
最近我们项目要和别的项目集成,本来自己项目的一套流程就不能用了,需要用其他项目的菜单用户等,这就需要调用他们的接口,但是调用他们的接口需要使用他们提供的restTemplate,因为他们加了自定义的headerInterceptor,会有各种认证。但是我们项目一个配置中也定义了一个全局restTemplate @Primary @Bean public RestTemplate loadBalanced() { RestTemplate template = new RestTemplate();
文章目录Spring Boot Test 系列4 - 深入探究使用WebTestClient作API测试前言API设计资源创建ControllerCase 1 - 查询全部用户编测试运行测试-失败定义API运行测试-成功Case 2 - 创建新用户编测试运行测试-失败定义POST方法运行测试-成功Case3 - 查询指定ID的用户编测试运行测试-失败定义API运行测试-成功Case3 - 删除指定ID的用户编测试运行测试-失败定义DELETE方法运行测试-成功单元测试小结集成测试驱动开发创建集成测
我们经常会有根据条件来加载不同的接口。比如你查询目录下文件列表, Windows 下你会用 CMD 的 dir 命令,而 Linux 下你会使用 ls 命令。 熟悉 Spring Boot 自动配置的也知道 Spring Boot 能根据不同的实际情况启用不同的配置。这就是@Conditional注解在发挥作用。 该注解指定了在什么条件下创建 Bean 进行配置。 2. @Conditional 注解 Spring Boot 包含多个 @Conditional 注释,可以在@Configurati.
我们项目往往会引入其他项目的依赖,造成功能冲突的,我们想把这些排除掉,不注入到我们项目IoC容器中,只加载自己的 @ComponentScan(basePackages = "com.xxx",excludeFilters = { @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes = { xxxPublisher.class, xxxAdvic
import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired;
由于公司把redis相关的配置,工具放在了一个似common的工程里,这样以后肯定不可避免的出现某些项目可能并不需要使用redis,但是还是依赖common里的别的一些库 所以排除springboot启动加载的一些bean还是有意义的 首先由自己配置的RedisConfiuration,还有RedisUtil,可以使用@ComponentScan注解用来扫描加排除,不加Compon...
第一步我们新建一个应用启动的,一个用来充当Configuration,为了能明显的感知到其到底有没生效,我编如下: @SpringBootApplication public class Test { public s... rocketmq org.apache.rocketmq.remoting.exception.RemotingConnectException:connect to <10909> failed 40683 Java Apache Http绕过Https证书校验:PKIX failed: SunCertPathBuilderException:unable to find valid certificat Mr.Java.: 忘记了,你可以通过类名和包名搜到。 Java Apache Http绕过Https证书校验:PKIX failed: SunCertPathBuilderException:unable to find valid certificat To Do.: 大哥 导入类不给啊?