单元测试设计原则

单元测试设计原则

2023年7月21日发(作者:)

单元测试设计原则背景为了提⾼开发⼈员的代码质量,编写⾼质量的单元测试,要遵守3R(Responsible, Reliable, Repeative)原则,具体含义如下:Responsible: 谁开发谁负责测试,在哪⾥开发就在哪⾥测试。Reliable: 测试case要可靠,并且是值得信赖的,对于底层的任何改动都要能够及时感知。Repeative: 所有单元测试⽤例都要能够重复运⾏。能够重复运⾏就能够进⾏回归测试、覆盖率统计等等。⽅案1. 如何做到Responsible?开发在完成⼀个⽅法,或者⼀个类之后,就要及时得进⾏单元测试;不能在对应⽅法或类的调⽤处进⾏测试,⽐如两个模块A、B,A是基础模块,为模块B提供服务,那么所有A模块的单元测试case都应该在A模块的内部进⾏测试。2. 如何做到Reliable?为了使得测试⽤例尽量可靠,就要减少mock的使⽤(对于第三⽅的调⽤可以使⽤mock),对每层代码的测试都要完全依赖于下层,不能mock下层逻辑。因此引⼊递进集成的概念,⽐如测试DAO时要连接真实的数据库,测试Service时要使⽤真实的DAO、DB, 测试Controller层的代码,要使⽤真实的Service、DAO、DB,以此类推。这样就可以最⼤限度的提⾼case的可靠性。3. 如何做到Repeative?必须要做到case间完全解耦,没有任何的依赖,这包括和数据库的依赖以及第三⽅的依赖。case解耦可以通过准备测试数据、mock第三⽅调⽤来解决。4. 如何进⾏⾃动断⾔?可以使⽤junit的断⾔,或者hamcrest提供的assertThat断⾔。5. 如何同时使⽤多个junit默认执⾏类?⽐如同时使⽤@RunWith()和@RunWith()。junit类是不能同时添加多个默认执⾏类的,此时可以通过编程,将默认执⾏类所做的⼯作放在@Before⽅法来完成。privateTestContextManager testContextManager;@BeforepublicvoidsetUpContext()

throwsException {

//this is where the magic happens, we actually do "by hand" what the spring runner would do for us,

// read the JavaDoc for the class bellow to know exactly what it does, the method names are quite accurate though

ntextManager =

newTestContextManager(getClass());

eTestInstance(this);}6.

END

发布者:admin,转转请注明出处:http://www.yc00.com/news/1689938895a295702.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信