首页 新闻 会员 周边

问一个关于单元测试的问题

0
悬赏园豆:15 [已关闭问题] 关闭于 2012-07-18 15:56

假设有两个函数如下所示

 public void Login(Userinfo paraUserinfo)
{
//服务器端的验证在这里吗??
LogOut(null);

}

public void LogOut(Userinfo paraUserinfo)
{

}

如果做单元测试的话,Login函数最好不调用LogOut函数,因为LogOut函数可能连接数据库,可能调用某个接口,可能为实现,

我想知道这两个函数改如何组织,才能方便做单元测试

现在发现代码一个套着一个没法做单元测试

谢谢

 


 

互联网Fans的主页 互联网Fans | 菜鸟二级 | 园豆:344
提问于:2012-02-14 21:38
< >
分享
所有回答(3)
0

没看懂这代码什么意思,Login方法里为什么要调用LogOut?

水牛刀刀 | 园豆:6350 (大侠五级) | 2012-02-14 21:42

函数名字不重要

主要是如何组织才能方便做单元测试

支持(0) 反对(0) 互联网Fans | 园豆:344 (菜鸟二级) | 2012-02-14 21:47
0

代码一个套着一个为什么就不能做单元测试?连接数据库或调用其它接口有什么不合适的吗?

LCM | 园豆:6876 (大侠五级) | 2012-02-14 23:52

以前没想过给代码做单元测试

发现代码一个连着一个很难做单元测试

我觉得单元测试要测的每个函数,都是独立的有输出输入就行,可以控制输入就可以测试,不知道你是怎么组织代码做单元测试的

支持(0) 反对(0) 互联网Fans | 园豆:344 (菜鸟二级) | 2012-02-16 08:46

@(张超): 代码套着的也应该都做单元测试的。比如LogOut方法你需要做单元测试,如果通过的话,Login方法也要做单元测试,它一个套着一个的话,你单元测试Login目的是为了测试它套得对不对。

支持(0) 反对(0) LCM | 园豆:6876 (大侠五级) | 2012-02-16 09:44
0

可以使用mock来解决的吧。另外要想让代码更具有可测试性,可能会要用到依赖注入。

如果login和logout在同一个类class1中,就可以先测试logout,如果logout测试通过后,再测试login。

可以mock一个class1。然后就可以测试login了。

如果login和logout在不同的类中,如logout在class2中,可以把logout方法放在接口ILogIn中,在class1中使用属性对ILogIn进行依赖注入。mock一个ILogIn接口,就可以啦。许多东西都是联系在一起的,依赖注入、mock object,最近也在看单元测试,这只是我的一些想法。

Leo_Lei | 园豆:202 (菜鸟二级) | 2012-07-05 22:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册