浏览 5070 次
锁定老帖子 主题:写单元测试的一个问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-01-20
假设每一层可能是由不同的人开发也可能是同一人开发 如果 A 有10 个异常路径需要测试, 这十个异常都是在C里面可能发生的 我是否需要针对C,B,A都写十个TestCase? 或者说我对C写十个(完全覆盖), 对A只写三四个(不完全覆盖),对B不写 ....... 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-01-20
我随便举个例子。譬如说UserLoginAction需要用到UserDAO,UserDAO的一种异常情况是无法连接到数据库,这个时候你认为要不要在UserLoginAction的测试里面加上“无法连接数据库”的情况呢?
|
|
返回顶楼 | |
发表时间:2006-01-20
gigix 写道 我随便举个例子。譬如说UserLoginAction需要用到UserDAO,UserDAO的一种异常情况是无法连接到数据库,这个时候你认为要不要在UserLoginAction的测试里面加上“无法连接数据库”的情况呢?
我大致是指下面一种情况: 如果是A.Save(string input) ---> B.CheckInput(string input)--->C.RegexCheck(string input) 假设C.RegexCheck()中 ,因为input string内容的不规范有10种情况可能导致检查失败 ; B和A是否都需要(或者说建议)加上这10种情况的的Exception Test Case? ps:A.Save()和B.CheckInput()里面还有其它需要测试的路径这里不做考虑. |
|
返回顶楼 | |
发表时间:2006-01-20
gigix 写道 我随便举个例子。譬如说UserLoginAction需要用到UserDAO,UserDAO的一种异常情况是无法连接到数据库,这个时候你认为要不要在UserLoginAction的测试里面加上“无法连接数据库”的情况呢?
我觉得不应该加,针对UserLoginAction的单元测试只是测试Action的单一功能的,不应该考虑到其他对象带来的影响。 在webwork2.2里面可以配置global exception,那么可以专门针对这个global exception写单元测试。 |
|
返回顶楼 | |
发表时间:2006-01-21
robbin 写道 gigix 写道 我随便举个例子。譬如说UserLoginAction需要用到UserDAO,UserDAO的一种异常情况是无法连接到数据库,这个时候你认为要不要在UserLoginAction的测试里面加上“无法连接数据库”的情况呢?
我觉得不应该加,针对UserLoginAction的单元测试只是测试Action的单一功能的,不应该考虑到其他对象带来的影响。 在webwork2.2里面可以配置global exception,那么可以专门针对这个global exception写单元测试。 也可以用mock来实现。关键在于,你当前要测试的这个component打算处理哪些异常?如果你打算捕捉一个异常,你就应该针对它写测试。更准确地说应该是,如果你没有先编写针对某种异常的测试,根本就不应该出现捕捉它的行为。 |
|
返回顶楼 | |
发表时间:2006-01-21
gigix 写道 robbin 写道 gigix 写道 我随便举个例子。譬如说UserLoginAction需要用到UserDAO,UserDAO的一种异常情况是无法连接到数据库,这个时候你认为要不要在UserLoginAction的测试里面加上“无法连接数据库”的情况呢?
我觉得不应该加,针对UserLoginAction的单元测试只是测试Action的单一功能的,不应该考虑到其他对象带来的影响。 在webwork2.2里面可以配置global exception,那么可以专门针对这个global exception写单元测试。 也可以用mock来实现。关键在于,你当前要测试的这个component打算处理哪些异常?如果你打算捕捉一个异常,你就应该针对它写测试。更准确地说应该是,如果你没有先编写针对某种异常的测试,根本就不应该出现捕捉它的行为。 确实如此,不过从楼主给的代码来看,没有看出A要捕捉所有的异常。 假设用ww的异常处理跳转,那么Action的单元逻辑就不会涉及这个异常的处理了,如果Action的逻辑仅仅是delegate to B的话,那么测试也没有必要了。 最多来一次大约的集成测试跑通连接的代码就ok 了。 |
|
返回顶楼 | |
发表时间:2006-01-21
引用 也可以用mock来实现。关键在于,你当前要测试的这个component打算处理哪些异常?如果你打算捕捉一个异常,你就应该针对它写测试。更准确地说应该是,如果你没有先编写针对某种异常的测试,根本就不应该出现捕捉它的行为。
![]() |
|
返回顶楼 | |