假设有两个函数如下所示
public void Login(Userinfo paraUserinfo)
{
//服务器端的验证在这里吗??
LogOut(null);
}
public void LogOut(Userinfo paraUserinfo)
{
}
如果做单元测试的话,Login函数最好不调用LogOut函数,因为LogOut函数可能连接数据库,可能调用某个接口,可能为实现,
我想知道这两个函数改如何组织,才能方便做单元测试
现在发现代码一个套着一个没法做单元测试
谢谢
没看懂这代码什么意思,Login方法里为什么要调用LogOut?
函数名字不重要
主要是如何组织才能方便做单元测试
代码一个套着一个为什么就不能做单元测试?连接数据库或调用其它接口有什么不合适的吗?
以前没想过给代码做单元测试
发现代码一个连着一个很难做单元测试
我觉得单元测试要测的每个函数,都是独立的有输出输入就行,可以控制输入就可以测试,不知道你是怎么组织代码做单元测试的
@(张超): 代码套着的也应该都做单元测试的。比如LogOut方法你需要做单元测试,如果通过的话,Login方法也要做单元测试,它一个套着一个的话,你单元测试Login目的是为了测试它套得对不对。
可以使用mock来解决的吧。另外要想让代码更具有可测试性,可能会要用到依赖注入。
如果login和logout在同一个类class1中,就可以先测试logout,如果logout测试通过后,再测试login。
可以mock一个class1。然后就可以测试login了。
如果login和logout在不同的类中,如logout在class2中,可以把logout方法放在接口ILogIn中,在class1中使用属性对ILogIn进行依赖注入。mock一个ILogIn接口,就可以啦。许多东西都是联系在一起的,依赖注入、mock object,最近也在看单元测试,这只是我的一些想法。