SpringBoot 测试类 禁止执行队列监听 (mq,kafka)的方法

在使用SpringBoot 测试模块时,如果我们的程序中有关于 rabbitmq, kafka等的监听时,测试模块会直接将这些监听部分给启动起来。
有时候我们在测试的时候,并不像执行这些方法。以下就是关于这个的一个解决办法。

import org.springframework.boot.context.TypeExcludeFilter;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.core.type.classreading.MetadataReader;
import org.springframework.core.type.classreading.MetadataReaderFactory;

/**
 * 用于测试时,停止监听
 * 暂时为停止kafka监听。
 * <p>
 * Create by JIUN·LIU
 * Create time 2020/5/28
 **/
public class ListenerExcludeFilter extends TypeExcludeFilter {
    private static final String KAFKA_LISTENER = "org.springframework.kafka.annotation.KafkaListener";
    private static final String KAFKA_HANDLER = "org.springframework.kafka.annotation.KafkaHandler";

    @Override
    public boolean match(MetadataReader metadataReader,
                         MetadataReaderFactory metadataReaderFactory) {
        AnnotationMetadata annotationMetadata =
                metadataReader.getAnnotationMetadata();
        return annotationMetadata.hasAnnotatedMethods(KAFKA_LISTENER)
                || annotationMetadata.hasAnnotatedMethods(KAFKA_HANDLER);
    }

    @Override
    public boolean equals(Object o) {
        return o != null && getClass() == o.getClass();
    }

    @Override
    public int hashCode() {
        return 1;
    }
}

然后再测试类上添加注解即可。
eg:

@RunWith(SpringRunner.class)
@SpringBootTest
@TypeExcludeFilters(ListenerExcludeFilter.class)
public class Neo4jInsertServiceTest {

    public void test () throws Exception{
        
    }

}

此时,既可以启动spring容器,又不执行上面我们以及设置的kafka的监听操作,对于 rabbitmq,同理处理即可。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值