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

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

内容简介:很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码。写单元测试,也是保证代码质量的一种方式。相信绝大多数的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等),本文都没有涉及,有兴趣的可以了解下。


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

查看所有标签

猜你喜欢:

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

企业应用架构模式

企业应用架构模式

Martin Fowler / 人民邮电出版社 / 2009 / 79.00元

随着信息技术的广泛应用,系统需要处理的数据量越来越大,企业级软件开发已经渐成主流,而开发人员面临的困难与挑战也是显而易见的。更糟糕的是,这一领域的资料一直非常缺乏。 本书是软件开发大师Martin Fowler的代表作,采用模式的形式系统总结了业界多年积累的经验,被称为“企业级应用开发领域的圣经”,出版以来一直畅销不衰,至今仍然无可替代。作 者在精彩地阐述了企业应用开发和设计中的核心原则基础......一起来看看 《企业应用架构模式》 这本书的介绍吧!

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

RGB HEX 互转工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器