谁能告诉我单元测试(UT)的原则

ichyw 2001-08-23 03:37:14
我觉得在真正的工程项目中,UT的作用有限。
请问:
1。全局变量多的程序是不是不容易作UT
2。对A函数做UT,而在A函数里调用B函数,现在要测试B函数调用失败的情况,
请问能否另外写一个C函数来代替B函数
int C()
{
return -1;
}
但是B函数里其它的操作被取消了,这有可能改变系统的正常流程,使测试变得
没有意义,怎麽办?
...全文
176 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
FireKylin 2001-08-23
1.UT与全局变量多没有直接关系,因为你做的是测试一个单元。但是全局变量多意味着你的
模块耦合性强,即使每个单元都没有问题了,也可能因为函数间协调不好出现问题。这样的
问题有时候表现出来会很怪异。
2.一般来说,Unit本身无法直接运行,都需要main函数。notyy的分析我也很赞同,你的b函数
一定是更改了某些全局变量。这样的话,你可以在main函数的开头把这些全局变量先赋上
期望的值,然后写一个函数名与B相同,函数体与你说的C相同的函数。这样做控制非常灵活,
可以任意修改测试数据(那些全局变量和B函数的返回值)。当然这些也不是一成不变的,
因为程序是多种多样的,具体问题还得具体分析。
我所说的用于UT的main函数和b函数通常称为桩函数。
回复
notyy 2001-08-23
什么样的项目是真正的工程项目?呵呵。
1、全局变量多有可能预示设计上有些问题。单元测试实际上就是一次模拟对被测试的方法的调用,如果全局变量会影响到这个调用,那可能真的要好好考虑考虑。
2、a函数调用b函数。先对b函数做单元测试,然后对a函数做单元测试。
你举的例子里说明b函数里有些方法操作了一些全局变量,并且这些全局变量控制着正常的流程。
先想想有没有办法改变这种情况,优化一下设计。然后,既然你是测试b失败的情况,当然可能有b里的所有操作都失败的情况。
其实就你所描述的情况,很需要对b做很详细的测试。
回复
相关推荐
发帖
研发管理
创建于2007-08-27

1221

社区成员

软件工程/管理 管理版
申请成为版主
帖子事件
创建了帖子
2001-08-23 03:37
社区公告
暂无公告