单元测试原则
所有Logic接口中所有的方法实现必须有单元测试,其他层中的方法暂时不做单元测试;
单元测试以“实现类名+Test”命名,使用测试接口的包名作为单元测试类的包名,如对于com.qusiness.logic.LoginLogic,测试类为com.qusiness.logic.LoginLogicTest;
单元测试放在项目的test源代码文件路径中;
单元测试中的每个方法为一个测试场景,按照“test+方法名+场景名”规则命名,例如testLoginNormal和testLoginException,分别对应正常场景和异常场景,正常场景名可以省略Normal,直接使用“test+方法名”,即testLogin;
每个接口中的方法中至少有一个正常测试场景,用来检查逻辑是否正常执行,必须用代码来实现“如果结果是正确的,我怎么能知道呢?”;
正常测试场景中必须包含对边界条件的测试,遵循CORRECT原则:
Conformance,一致性,检验输入数据是否符合期望的输入格式;
Order,顺序,输入的数据集合是否是期望的顺序;
Range,范围,输入的数据是否在一定的范围期间;
Reference,引用,该逻辑执行的前提条件。例如对于一个申请审批的逻辑approve(id)来说,虽然显式的参数只有一个审批流程ID,但实际上该逻辑执行的过程中引用了申请类的“状态”,所以必须对该状态进行检查。也就是说该逻辑的前提条件必须是对应的申请只有处于“已提交状态”。
Existence,存在性,是否允许为null或者0;
Cardinality,个数,输入的参数集合中元素的个数不同时执行结果,包括0、1或者多个;
Time,时间,对于非特殊方法,执行时间应该控制在1秒钟以内;
对于接口中显示声明了抛出异常的方法,对于每种异常必须都有一个测试场景,例如,对于 void login(name, password) throws InvalidAccountException, ExpiredAccountException;必须定义testLoginInvalidAccountException和testLoginExpiredAccountException两个测试场景,不允许以testLoginException一个场景中做两个场景的测试;
例子:
简单方法:参见base内部项目 com.qusiness.base.test. IFundAccountLogicTest
正常情况:参见base内部项目 com.qusiness.base.test.IRefundmentServiceTest
状态情况:参见base内部项目 com.qusiness.base.test. IOrderPublishServiceTest
边界情况:参见base内部项目 com.qusiness.base.test.IOrderPublishServiceTest
依赖情况:参见luc客户项目 com.qusiness.luc.test.SmsComandLogicTest
分享到:
相关推荐
RTT操作系统基础版,主要描述RTT的创建和起源,以及发展的前景
MOOC中的Python语言程序设计课程(北京理工大学)单元测试答案。包含9个单元的单选题以及编程题答案。编程题每个题目一个文件夹,选择题在一个文件夹。注:此答案用于沟通交流,辅助课程完成。
北京课改版六年级上册小学英语 Unit 1 单元测试卷(含听力音频).docx
北京课改版四年级上册小学英语 Unit 5 单元测试卷(含听力音频).docx
北京迪文 LED单元板测试系统方案rar,北京迪文 LED单元板测试系统方案
北京课改版三年级上册小学英语 Unit 5 单元测试卷(含听力音频).docx
六年级语文下册 北京的春节单元测试 人教新课标版 试题.doc
北京课改版六年级上册小学英语 Unit 7 单元测试卷(含听力音频).docx
小学英语北京版一年级下册U2单元测试.doc
北京课改版四年级上册小学英语 Unit 7 单元测试卷(含听力音频).docx
小学英语北京版三年级下册U7单元测试.doc
小学英语北京版三年级下册U6单元测试.doc
一年级下册数学单元测试3.认识人民币北京版.pdf
北京市2020年上学期十一学校高二数学双曲线单元测试试题.docx
北京雷电防护装置测试中心北京雷电防护装置测试中心
北京课改版三年级上册小学英语 Unit 3 单元测试卷(含听力音频).docx
第二学期北京版五年级数学第一单元测试题及答案一精选.doc
最新北京版小学四年级上册数学单元测试-4.pdf
最新北京版小学四年级上册数学单元测试-3.pdf