前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【从零开始】springboot单元测试(贰)

【从零开始】springboot单元测试(贰)

作者头像
小尘哥
发布2022-12-07 10:43:46
5430
发布2022-12-07 10:43:46
举报
文章被收录于专栏:小尘哥的专栏

1、简单介绍

junit5大致分为三层,其整体架构如下(图片来自网络):

从上图可见,整个JUnit5可以划分成三层:顶层框架(Framework)、中间的引擎(Engine),底层的平台(Platform);

功能如下;

Platform:位于架构的最底层,是JVM上执行单元测试的基础平台,还对接了各种IDE(例如IDEA、eclipse),并且还与引擎层对接,定义了引擎层对接的API;

Jupiter:位于引擎层,支持5版本的编程模型、扩展模型;

Vintage:位于引擎层,用于执行低版本的测试用例;

对比junit4

对比junit4,升级改造了不少东西,从架构,到包、类等,看下官方,比如@Before和@After不再支持,使用@BeforeEach和@AfterEach进行替代,其他的都类似。

而junit4常用的@RunWith,在junit5中由@ExtendWith替代,并且是在有个性化扩展需要的时候再添加就可以,一般只需要加一个@SpringBootTest就可以哈皮的开启单元测试了。

2、数据回滚

经常会遇到有人问,单元测试时候保存/修改怎么测?这样不是就把数据库的数据改掉了吗?今天我们就来说一个简单的处理,使用注解:@Transactional。对,没看错,就是你在save()方法上加的那个事务注解,junit会将整个事务回滚,示例如下:

代码语言:javascript
复制
   @DisplayName("保存学生信息")
    @Test
    @Transactional
    void save(){
        Student student = studentService.getByCardNum(RandomUtil.randomInt());
        boolean r = studentService.save(student);
        Assertions.assertTrue(r);
    }

注意看下日志,执行最后会有“Rolled back·······”

最后看下数据库,依然只有原来测试的一条数据,回滚成功。

2、 断言Assertions的使用

Assertions是junit5新增的断言,区别于junit4的Asserts,先来总体看下内置方法:

尝试一下常用的几个assertTrue、assertNotNull、assertEquals、assertArrayEquals,示例代码:

代码语言:javascript
复制
@DisplayName("断言测试")
@SpringBootTest
public class AssertionsTest {

    private static int a , b;
    private static Integer[] c, d;


    @BeforeAll
    static void before(){
        a = 1;
        b = 1;
        c = new Integer[]{1, 2, 3};
        d = new Integer[]{1, 4, 3};
    }

    @Test
    void assertionsDemo(){

        boolean result = a == b;
        Assertions.assertTrue(result);
        Assertions.assertNotNull(result,"result must be not null");
        Assertions.assertEquals(a,b);//这里可用在某些持久层框架添加、修改、删除时返回值为int类型的数据处理条数时
        Assertions.assertArrayEquals(c,d,"期望值是:{1,2,3}");
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陌与尘埃 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、简单介绍
  • 2、数据回滚
  • 2、 断言Assertions的使用
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档