做单元测试要会写代码吗?
请做单元测试要会写代码吗? 至少要会写一些简单的,做单元测试肯定会涉及驱动和桩的编写的。Visual Unit可以自动生成代码
如果用Visual Unit做单元测试的话,可以不用写代码,但是很简单的数据输入输出方面的“伪代码”还是要的。如果能看得懂下面的说明(摘自VisualUnit帮助),那就基本上可以用Visual Unit做单元测试了。输入数据
自动为参数生成输入数据,其中,“ParamName = ”中的“=”仅表示这个对象可能需要赋值,要根据实际情况灵活处理,请参考下面的示例(黑色部分是由VU生成的,红色部分是由用户填写的。行末不要加分号,VU会自动删除“=”):
//对于基本数据类型或定义了=操作符的类型,直接将数值填在“=”后面
int i = 0
CString name = "Smith"
//未定义=操作符的结构,用.操作符给各个域赋值,VU会自动删除“=”
PERSON person =
person.name = "Smith"
person.age = 20
//可以调用对象的构造函数,VU会自动删除“=”
CMyClass obj("name", 20) =
//可以调用对象的初始化函数
CMyClass obj =
obj.Init()
//仅用于输出的参数可以不作任何处理
CString name =
为了简化问题,如果参数是指针,指针的指针,或是引用,也直接生成对象,用户只需为对象设定初始值,VU会自动做适当处理,参考测试用例代码解析。如果要给指针赋空值,则要切换到代码模式,直接修改代码。
可以视需要访问成员变量、全局变量,调用其他成员函数,语法如下:
//可以用.操作符直接访问成员变量
.mName = "王老五"
.mAge= 100
.mName.Empty()
.mObj.Init()
//可以用.操作符调用其他成员函数
.PreCondition()
//其他地方定义的全局变量,如果是可见的,则可以直接访问
gVar = 0
只要被测试的类中定义了UNIT_TEST宏,就可以直接访问私有或保护的成员变量,参见在被测文件中添加代码。
预期输出
预期输出与输入数据的语法是一样的。如果被测试函数有返回值,会保存在名为ret的变量里,并在预期输出的框中生成"ret == ",可以直接填写预期的返回值。也可以添加其他的预期输出,例如成员变量或全局变量,与输入数据一样,可以用.操作符直接访问成员变量。每行填写一项预期输出,运算结果为布尔值的表达式都是合法的预期输出,不一定是等式,如下面的预期输出都是可行的:
ret == 3125
.mAge > 20
ret != 0
i<0 || ret>=j
str.IsEmpty()
mRect.leftTop.x == 100
VU会把第一个点操作符替换为"pObj->",如".mAge=0",生成对应的测试代码"pObj->mAge=0;",因此,表示成员变量的点操作符只能作为第一个字符。例如:.mPhase.IsEmpty()是可以的,但!.mPhase.IsEmpty()则是不合法的,会产生编译错误,这种情况可以直接写:!pObj->mPhase.IsEmpty()。
由上述可以看出,输入数据和预期输出是非常灵活的,具有很好的适应能力,即使是复杂的输入输出,也能处理。用户只需要填写第一个测试用例,其他的测试用例通过拷贝现有测试用例并修改的办法建立。在特殊情况下,可以切换到代码模式下直接编辑代码。 首先什么是测试,就是发现BUG, 那对于一个代码都看不懂的人怎么去发现代码中的BUG, 况且测试代码不是但但靠什么自动生成代码的工具来实现, 很多地方都是靠你用眼睛开出问题的, 这个也是测试中的一部分叫做静态走读. Visual Unit 没有用过 可不可以介绍一下 谢谢了
页:
[1]