今天碰到一个问题,写测试类的时候,与项目中的某个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设计资源创建Controller类Case 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.: