Java单元测试

        ​在Java项目中,单元测试虽然不会编译且部署到服务器上,但是单测对于一个项目来说还是很重要的。好的单元测试可以充分发现代码里边的隐藏bug,简化调试,极大的降低上线的风险,为运维以及测试大大降低工作量,降低项目的成本。

        最近项目频繁要求单元测试覆盖率要达标,由于之前很少写单元测试,所以这次单独总结一点单测的内容。单元测试有三个要点;1.必须可重复执行,成功率100%,不允许失败的单测;2.要对源码方法中的每种条件都要覆盖到,单测中尽量使用断言去进行验证,便于sonarqube(www.sonarqube.org)进行统计结果;3.单测中对数据的增删改操作执行结束后要执行回滚,不能影响数据库中的业务数据或产生脏数据,单测必须写到test文件夹下,不能写在业务代码中。

        对于现在常用的spring来说,编写单测比较方便,有单独的test模块用于测试,就是JUnit。单元测试类应该加上@SpringBootTest与@RunWith(SpringRunner.class)注解,且单元测试方法要加上@Test注解,且必须是 public void开头,即公共无返回值,还有一点需要注意的是,单测方法名不能是test,一个单测尽量只测一个方法。对于操作数据库的单测时,应该加上@Tranactional和@Rollback注解来保证不产生脏数据。d得到测试结果后,应该使用断言,而不是System.out去输出结果。如下代码所示:

@SpringBootTest@RunWith(SpringRunner.class)public class JunitTest {    @Test    @Rollback    @Transactional    public void firstTest(){        Assert.assertNull(Object actual, String message);    }}

        关于断言的介绍,请查看相关文档:www.liaoxuefeng.com/wiki/1252599548343744/1264740093521088#:~:text=在Java中,使用,assert%20关键字来实现断言。 (liaoxuefeng.com)。在 IDEA 中,如果要为某个类或者方法写单元测试很简单,直接在指定的类或者方法 ctrl + enter, 即可弹出生成代码的快捷提示,选择 Test 即可。上面提到sonarqube统计单测覆盖率,但是由于sonarqube部署比较繁琐,在IDEA中也可以直接统计覆盖率,但是两个统计的方法可以不一样,自己跑的一些单测覆盖率不太一致,有兴趣的同学可以自行研究。如下图,使用这个按钮启动测试,就可以统计出类、方法以及行的覆盖率。

更多相关内容参考:junit.org/junit5/docs/current/user-guide/#overview

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Miki_souls

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值