文章目录
前言
项目最近引入sonarqube
,扫描之后没有代码覆盖率,是因为没有写单元测试,于是需要从头引入单元测试。
单元测试
但是,条条大路通罗马。
方式一
@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"})
class ApplicationTests {
@Test
void contextLoads() {
}
}
方式二
其实就不用@SpringBootTest
了,直接使用注解@RunWith(MockitoJUnitRunner.class)
,但由于我的版本是2.7
,Spring Boot
提供的其实是Junit5
,@RunWith
是Junit4
版本,需要额外引入。