理解单元测试

单元测试

在Java中单元测试指代码单元的测试用例,代码单元指类中的方法。单元测试是用以保证代码的逻辑正确性,测试用例越全则代码越稳定,可以保证重构时代码的正确性。一般情况下,建议先写单元测试再写具体代码,因为如果写完代码再设计单元测试则会受先入为主的影响,倾向于测试已完成代码的正确性,易于忽略边际情况。实际操作便是在编写类时首先考虑类的职责,即类用来干什么,首先设计好类接口,然后根据接口进行测试的编写,测试设计完成后再进行实际代码的编写,最后一步则是验证,循环往复直至所有测试通过。

单元测试为重构时提供了极大的便利,因为单元测试为代码的修改提供了结果的保证。如果重构失败,则单元测试不会通过。它保证了代码修改的信心,因为机器是不会骗人的。只要单元测试能够通过则代表重构是没有问题的。在没有单元测试的项目,我们要进行重构则会变得十分小心翼翼。我们会害怕影响其他功能,因为一个功能的变更常常会牵扯到其他功能,这样要验证重构的就需要验证完整的流程,这极大的增加了软件维护成本。而且在开发过程中也可以提高开发效率,因为验证代码的改动时只需运行部分代码,而不必编译整个项目。还有一点就是可以提高项目的代码质量,为了编写单元测试,我们不得不写好代码,而写好了代码则更利于单元测试,这其实是一个相互促进的过程。从长远来看,编写单元测试绝对是明智之举。

单一职责原则

单元测试中最重要的便是代码单元的划分,良好的职责分配更利于单元测试的进行。单一职责原则便是用于指导代码功能的划分,它保证代码结构的清晰,降低类的复杂度,为编写单元测试提供了极大的便利。

单一职责原则(Single responsibility principle)规定每个类都应该有一个单一的功能,并且该功能应该由这个类完全封装起来。遵循单一职责原的优点有:

  • 可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
  • 提高类的可读性,提高系统的可维护性;
  • 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。

单一职责原则作为指导性原则在平时工作时应尽量遵循,特别是在进行功能设计的时候。但也应该应学会灵活变通,当代码逻辑十分简单的时候,暂时违背原则也并非不可,生搬硬套只会导致类的冗余。

私有方法或者保护方法是否需要单元测试?

其实这个问题可以引申为那些代码需要进行单元测试,我认为需要尽可能的覆盖单元测试,这样可以大程度保证代码的正确性,减少bug的数量。为了更方便的进行私有方法或者保护方法的单元测试,单抽成类是最好的办法。这样可以降低单个类的逻辑复杂度,逻辑更加清晰更利于单元测试。

为什么要多用组合少用继承?

在实际开发中大家都在提倡开发过程中要尽量使用组合少用继承,一直对这个不是非常理解,直到现在接触单元测试才有所领悟。因为使用继承类的行为就有可能受父类影响,如果要对子类进行单元测试则意味着同时需要对父类进行单元测试保证逻辑的正确性,这样显然不利于进行单元测试,单元测试应该是非常细粒度的,只是单个类的测试。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容