0


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

标签: junit java 单元测试

本文转载自: https://blog.csdn.net/Brevity6/article/details/126754319
版权归原作者 brevity_souls 所有, 如有侵权,请联系我们删除。

“Java单元测试”的评论:

还没有评论