论坛首页 综合技术论坛

JUnit测试的粒度问题

浏览 13044 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-03-19  
引用

我把这个情况更加具体的说明一下。设想有一个系统,他有两个功能:
1、操作员在前台界面上输入客户的资料;
2、经理在后台界面上查询客户的资料。

经理要看的并不是简单的客户的资料。客户有很多笔交易,每笔交易都有金额,每笔交易都有期望的利润率。经理要看我这个月准备从每个户赚多少的钱的Report。
如何做UT?
0 请登录后投票
   发表时间:2007-03-20  
run_xiao 写道
经理要看的并不是简单的客户的资料。客户有很多笔交易,每笔交易都有金额,每笔交易都有期望的利润率。经理要看我这个月准备从每个户赚多少的钱的Report。
如何做UT?

这不是UT应该怎样写的问题,而是设计应该是什么样。我对你所说的业务不了解,暂且按照我心目中的设计写一个UT:

首先为这个“客户”建立一个“交易”;
为这个“交易”设定参数:时间、地点、人物、“项目”、“成交价”……
“交易”“执行”;
Assert(“客户”的“交易历史”上出现这笔“交易”);
Assert(“交易”的“金额”符合刚才设定的参数);
Assert(“交易”的“利润率”符合刚才设定的参数);
Assert(从“客户”身上赚的钱符合刚才设定的参数);
Assert(经理希望看见的“Report”上面的数据符合刚才设定的参数);
0 请登录后投票
   发表时间:2007-03-22  
重构,让它易于测试.这就是单元测试的反馈的一个非常重要的优点.实际上也许你的对象已经是一个GOD CLASS了,遵循单一职责.
还是那句话,重构,让它易于测试.
0 请登录后投票
   发表时间:2007-03-22  
仔细阅读《敏捷软件开发》,会找到一些你要的东西!
0 请登录后投票
   发表时间:2007-07-09  
最近又考虑了一下该问题,
UT应该是对接口的实现做白盒测试

若接口的实现巨复杂,那就要Refactor,将其职责分担到其他的Class,
这样再对其他Class作UT
0 请登录后投票
   发表时间:2007-07-19  
主要是层次的清晰
单讨论测试没有多大意义
0 请登录后投票
   发表时间:2007-08-08  
allentemplar 写道
主要是层次的清晰
单讨论测试没有多大意义

我赞同这个观点。
0 请登录后投票
   发表时间:2007-08-08  
allentemplar 写道
主要是层次的清晰
单讨论测试没有多大意义

没错,有了松耦合的设计,单元测试自然不成问题。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics