0


Spring Boot 单元测试

学无止境,气有浩然!

文章目录


前言

项目最近引入

sonarqube

,扫描之后没有代码覆盖率,是因为没有写单元测试,于是需要从头引入单元测试。


单元测试

Spring Boot

提供了单元测试的框架,只需要引入。但是麻烦的点是,如果使用这个,

Spring Boot

就会进行一系列的自动配置,项目上数据库密码的配置是没有在

properties

文件里配置的,就意味着在单元测试启动就会报错,数据库依赖相关的

bean

组装失败。

但是,条条大路通罗马。


方式一

如果启动的时候,数据库相关的不让自动配置不就好了。

@SpringBootTest

里面有个

properties

属性,这个配置就跟

properties

里面是一毛一样的。所以直接排除掉数据库的配置就好了。

@SpringBootTest(properties ={"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration"})

又一个问题蹦出来了,在类里

@Autowired

某个对象的时候,还是回去装配,启动还是会报错,这样你

mock

注入的

bean

不会生效,怎么办呢。

可以使用懒加载,启动就别装配了,使用的时候再说。这样使用的时候就是使用

Spring Boot Mock

出来的

bean

完整代码如下:

@SpringBootTest(properties ={"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration","spring.main.lazy-initialization=true"})classApplicationTests{@TestvoidcontextLoads(){}}

方式二

其实就不用

@SpringBootTest

了,直接使用注解

@RunWith(MockitoJUnitRunner.class)

,但由于我的版本是

2.7

,

Spring Boot

提供的其实是

Junit5

,

@RunWith

Junit4

版本,需要额外引入。

这种方式需要测试的类就不能是使用

@Autowired

引入了,不能像在

Spring Boot

环境里了,只能自己实例化进行测试。


打完收工


本文转载自: https://blog.csdn.net/qq_37759895/article/details/136560963
版权归原作者 梦幻D开始 所有, 如有侵权,请联系我们删除。

“Spring Boot 单元测试”的评论:

还没有评论