咨询热线

怎么样编写好的测试

发布时间:2016-05-12 15:23:43

知道如何写出好的测试是关键,因为很容易写得不好。事实是,和其他所有一切一样,它需要实践。不过,这里有一些小贴士。
好的测试往往是简单的。它不会尝试一气呵成面面俱到。它的名字反映了它要的目的,并且名称应该精简成一句话。
确保测试不要过于指定。 过于指定的测试涉及到太多内部东西,并且不允许重构。
单元测试运行代码时会隔离其他测试,不一定是其他代码的测试。它将代码带出它的上下文,并创建其中一个方面的人工上下文,以便于进行调查。然而,这并不意味着单元测试必须得在隔离其他所有代码的情况下运行,尽管这通常被认为是“纯单元测试”。所有一切都没有必要mock和stub,因为只会导致更复杂的设置,更低的覆盖率和更加脆弱的测试。
在有意义的地方使用mock和stub。你不想对一个真正的HTTP API进行测试,那就stub。如果你正在测试的东西是你自己对该对象的调用,或你想要自己的代码历经某个路径,那么使用使用mock和stub。
测试读起来应该像一个小故事,遵循AAA体系: Arrange、Act、Assert。设置东西,做出声明,并且断言声明做了它应该做的。 “小故事”方面要重视小的方面。“3A”中没有一个应该超过3行代码以上。在阶段之间留一些空间会更好。应该没有任何分支和循环,你在断言时应该只涉及一个逻辑内容。 (如果一个断言语句就能表达自然是好,但有时你需要更多,那也没关系。)永远不要在测试的两个不同的地方断言,因为这会导致你实际测试的混乱。
测试应该只需要一些领域知识就可读。如果不深入模块的内部运作就很难解释的话,那么要么你最好多花一些时间在测试上,那么彻底弃之不顾。
一般情况下,不要测试依赖。对于某些项目,对一些代码所做的假设做一些简单的测试,可能是有意义的,但要谨慎和小心。测试库是库作者的工作。相反,要依靠更新日志进行升级,以及依赖于测试集成而不是库(不用mock一切的一个原因)。
编写不需要很长时间运行的低成本测试,因为要时常运行这些测试。如果你可以传递 --watch 参数到你的测试运行中,并且在每次有文件改变时运行它,那么这是一件好事。
最后但并非最不重要的一点是,使用你喜欢的测试框架。如果JavaScript是你的菜,那么我会推荐 AVA ,因为它清晰简单,而且没有复杂的配置。不管你选择什么,确保测试框架能和你一起工作,并帮助你编写测试更高效,更快捷。正如编码一样,如果你觉得不好玩,那么可能有什么地方出错了。

蓝鸥科技(www.lanou3g.com)是目前中国最大的移动互联网研发实训基地,也是国内唯一一家集产、学、研为一体的大型高新技术企业。一直致力于iOS开发、Unity3D游戏开发、Android开发和HTML5前端开发等软件人才的培养以及提供相关技术咨询、企业内训、项目孵化等服务。
蓝鸥强大的师资阵容,纯净的教育理念,严格的管理制度,使其成为了美国苹果公司AATC认证官方授权培训中心、Unity官方授权培训中心,也是目前国内仅有的一家“两大官方授权于一身”的移动互联网培训企业。
目前,蓝鸥在全国共拥有8家实训中心、2家中心直属分院和1家项目研发基地,分别是:北京实训中心、上海实训中心、广州实训中心、大连实训中心、郑州实训中心、西安实训中心、武汉实训中心、成都实训中心、北京中心直属分院(石家庄)、大连中心直属分院(哈尔滨)和上海项目研发基地。