【快学springboot】在springboot中写单元测试

栏目: Java · 发布时间: 5年前

内容简介:很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码。写单元测试,也是保证代码质量的一种方式。相信绝大多数的Java开发者都用过Junit来写单元测试。引入依赖:

很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码。写单元测试,也是保证代码质量的一种方式。

junit单元测试

相信绝大多数的 Java 开发者都用过Junit来写单元测试。

引入依赖:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>
复制代码

直接在方法上加上@Test注解即可:

【快学springboot】在springboot中写单元测试

加了@Test注解,就会有一个运行的图标了。

spring的依赖问题

现在的Java开发,基本上离不开spring了。但是使用spring,写单测的时候就会存在一个依赖注入的问题。

假设有如下一个Service:

@Service
public class TestService {

    public String getString() {
        return "Hello World!";
    }

}
复制代码

在Junit中直接自动装配:

public class JunitTest {

    @Autowired
    private TestService testService;

    @Test
    public void test() {
        System.out.println(testService.getString());
    }

}
复制代码

运行报错:

【快学springboot】在springboot中写单元测试

springboot写单元测试

在springboot中,解决spring依赖问题,非常的简单。只需要它提供的几个注解即可:

引入依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
复制代码

这里引入了一个spring-boot-starter-test依赖,是springboot中写单测所需要的。

在单元测试类上添加@RunWith(SpringRunner.class)、@SpringBootTest注解:

【快学springboot】在springboot中写单元测试

这时候就可以正常的把spring依赖注入进来了,运行方法,可以看到springboot启动时的输出:

【快学springboot】在springboot中写单元测试

如果是通过spring initialize创建的springboot项目(本系列第一篇文章有讲解),其实会自动创建一个单元测试类:

【快学springboot】在springboot中写单元测试

我们在写单元测试的时候,直接继承这个类即可。

单元测试事务回滚

写单元测试,难免需要操作数据库。有时候单元测试的数据库跟开发时候的数据库是同一个,为了不影响数据库的数据,需要在单测完成之后,将操作回滚。这在springboot中也是很容易解决的事情,只需要将单测类继承AbstractTransactionalJUnit4SpringContextTests即可

数据库有数据如下:

【快学springboot】在springboot中写单元测试

单元测试类如下:

【快学springboot】在springboot中写单元测试

测试方法如下:

@Test
public void deleteAll() {
    userRepo.deleteAll();
}
复制代码

执行方法后,如果事务不会滚,则会清除user表中的所有数据。

【快学springboot】在springboot中写单元测试

通过结果查看,单测运行没有问题,查看数据库:

【快学springboot】在springboot中写单元测试

数据也没有被删除,证明事务已经回滚了。

把继承的AbstractTransactionalJUnit4SpringContextTests类去掉,再次执行deleteAll方法:

【快学springboot】在springboot中写单元测试

数据库中的数据已被删除

总结

本文介绍了springboot中写单元测试的方法。其实优雅的写单元测试需要涉及到很多东西,比如mock(mockito、mockmvc等),本文都没有涉及,有兴趣的可以了解下。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

RESTful Web Services Cookbook

RESTful Web Services Cookbook

Subbu Allamaraju / Yahoo Press / 2010-3-11 / USD 39.99

While the REST design philosophy has captured the imagination of web and enterprise developers alike, using this approach to develop real web services is no picnic. This cookbook includes more than 10......一起来看看 《RESTful Web Services Cookbook》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换