既然选择远方,便只顾风雨兼程……
对于Draw A Line函数的单元测试的几点想法和实践
上一篇 /
下一篇 2009-05-05 09:52:21
/ 个人分类:软件开发相关
h5g4vx6q(re,dW%H0 这篇文章起源于有位园友在笔者的博客上提问(怎样对于一个Drawing类做单元测试),因为没有像其它的很多类或者方法,我们可以通过几句Asser.AreEqual(expectedValue, actualValue);来设置断言。这一类的单元测试笔者的经验或者说经历是一片空白,所以很遗憾不能及时帮助那位园友解决问题,而只是按照传统的单元测试的想法提供了点点建议。
5f2WZKL)\ uv0iO:B8fU]&n0一般的单元测试51Testing软件测试网6Gt)V{}3c:v
B}[
dn$d0 有返回值的
)RZ4RFg`.x:Y051Testing软件测试网)yn}q-x 一般而言,我们所要应对的单元测试是是来应付类似于public ObjectA SampleFunc(ObjectB param1, ObjectC param2){...},对于这类,应用Xunit系列工具就可以很轻松的摆平了。
y"CIgi.f(w0hY ^Rdr-SxM0 首先我们准备一批测试数据,包括输入和输出两块数据,然后一组输入数据inputs[]和一组期望中的输出数据expectedoutput对应,最后用上面提到的Assert就搞定了:51Testing软件测试网p7H:da9DH1}W
51Testing软件测试网z"vV(iK+R1B Assert.AreEqual(expectedoutput, new SampleFunc(inputs[0],inputs[1]))
\!i)L{,f&lN
i(q0L9g*Q.^b.e,s0然后泡上一壶茶,运行一下XUnit,绿了也就Ok了。51Testing软件测试网*M0h/q h\zb6o
51Testing软件测试网XE$aw;i 改变了某些变量的51Testing软件测试网c6XS"x4rES|%}
})l"vR.[)oq6ROy0 这一类的单元测试的对象——改变了某些变量的方法,一般它们没有返回值,但是它们会有一无意的流下了蛛丝马迹,比如改变了某个全局变量的值,或者给某个文件记录插上了一刀子留下了一道记录等等。例如某个方法啥也没干,除了向数据库添加了一条数据,自己还掩耳盗铃返回个void,跟没事的人似的。这类方法,XUnit系列也支持的很好,大不了咱去找受害者查证——查一查数据库看刚才添加的数据,然后来一个Assert一样完事。51Testing软件测试网f&cxm\|O
51Testing软件测试网9N"C8rY},_
N}x'a8y4JrO'D*W051Testing软件测试网1To"za~0K今天要说的单元测试51Testing软件测试网
x:f\!jv&b+\:BZ-w%c*]
Y!C(b;rMO0 几天要说的单元测试其实在开篇就已经泄露了天机——对Drawing相关的方法进行单元测试,也有人称之为对于GUI单元测试。笔者觉得这个名字怪怪的,因为之前经历的GUI测试大多是在功能自动化测试中才会遇到,但是要让我适应GUI单元测试这种说法,还是有点困难。为了更贴切的来说明这个问题,我取了个名字“Draw a line”单元测试。我们会写一个简单的方法,什么坏事都不干,就在墙壁上涂涂鸦——在WinForm窗口上画一条线,然后我们要对这个(类)方法进行单元测试。听起来很有意思,好像也不难,我开始也是这么想的,但是直到现在也没能找出一个让自己百分百满意的解决方案,不禁开始严重怀疑自己的水准~~