热爱测试,主要研究性能测试和自动化测试方面的技术,希望与同样对测试有热情的你一同进步成长
zibeike单元测试实践一:您的第一个单元测试
上一篇 /
下一篇 2008-08-25 20:40:04
/ 个人分类:单元测试
2L(|4uS1kLF_0 本系列课程是以《Pragmatic Unit Testing In C# with NUnit》这本书为基础,是zibeike在翻译和理解的基础上整理而来,希望对大家有些帮助,内容还是很多的。好的,那下面开始我们的单元测试之旅吧。
ot
|!AWD$`s0 您的第一个单元测试:51Testing软件测试网y~KRB*QC S:_b,u
单元测试是一段程序代码,这些程序代码是为了检验另一段程序代码的行为是否达到预期而写的。那么,该如何来达到这样的目的呢?
4F1j-e%C ZJE)v+_!x0 为了检验代码的行为是否达到预期,你可以使用assertion,这是个非常简单的方法调用来验证某些事情是否是正确的。例如,方法IsTrue检查了给定的布尔条件是否是真,如果条件不为真,那验证失败。您可以象下面这样来实现这个程序:
K6^_@qL['^w0 public void IsTrue(bool condition) {51Testing软件测试网0k8GYdkJ#`
?
if (!condition) {
2C2Kyz2gF(zW-i_0 abort();51Testing软件测试网WW(H$?nc_!m
}51Testing软件测试网(K/G/|6y)e
}
:W7u3H(|2S0w
|3o2A L0 你可以使用断言(assert)来检查所有事情,包括数字是否互相相等等。
9XpGJYi"U1f n0 int a = 2;
]P2O3eHb&p0 IsTrue(a == 2);51Testing软件测试网;[Y+Wuo(z
如果在调用IsTrue时,a不等于2,程序就会中止。51Testing软件测试网uw[RW*}^
因为我们是在检查是否相等,因此对这些数字使用断言会比较容易。为了检查两个整数是否相等,我们可以写一个方法,这个方法是以两个整数作为参数。51Testing软件测试网TDx'C6L4Z~%b'}"q~
public void AreEqual(int a, int b) {
8X$X&d(|4K0 IsTrue(a == b);
*W:Y-E/`m6d zM0 }
1Bq9w7P]9e(wF0 只是用这两个断言,我们就可以开始写一些测试代码了。在下一章,我们会看到更多关于断言在单元测试代码中的使用。但是首先,我们先来思考一下在写代码之前,我们需要什么样的测试。
r*y4^'zP!YZ!B7W0 1.1 测试计划51Testing软件测试网 b+m9Qq%O2@P3H;y
我们来看一个简单的例子,一个静态方法用来寻找list中的最大数。
z$dfFhz0 static int Largest(int[] list);
9VM;zUb6{0 也就是说,给一组数,如[7,8,9],这个方法应该返回9。这是一个合理的测试。那有没有其他的测试呢?现在花一分钟,你要想出尽可能多的测试情况。
?#U"j%t3P)N0 你想出了多少测试用例呢?51Testing软件测试网!t;u:_x B
数组中的顺序不影响结果,所有你可以得到下面的想法:
1f3Y/@@4t0 传入的数据 预期的结果
6O9a[ [^0 [7, 8, 9] 9
w"It0N$rHF
J0 [8, 9, 7] 9
I/M4B2r!F1wH;J$f0 [9, 7, 8] 951Testing软件测试网P2i4UJ~"IHZB
~
如果有两个最大值呢?
RE%mm]0 [7, 9, 8, 9] 951Testing软件测试网`%QI p.P/g
因为是int类型的,不是对象类型,你可能不需要关心哪一个9被返51Testing软件测试网p^%xA-k @B,]
回。51Testing软件测试网A6a8IOT%U,k4z
如果只有一个数字呢?
/I(]:sV+z%K:m0 [1] 1
xW)dk+BFmmB0 如果是负数呢?
-tAc0D2C-TE#\0 [-9, -8, -7] -751Testing软件测试网~e&B
UcF `,Gl;[F
然后,我们来实际的写“largest”方法,并且测试它。这是我们的第一个实现的代码:
:jL9^ Hb0 public class Cmp f -51Testing软件测试网t9kA&lRN;S,_~+e
n
///
qh*B8U9I0 /// <summary>51Testing软件测试网 G
\%tE3t`aqQfvK
/// Return the largest element in a list.51Testing软件测试网0W4g,J_j+K t
/// </summary>51Testing软件测试网duvdplg4m9X
/// <param name="list"> A list of integers </param>51Testing软件测试网7V}M
~6y m4u
/// <returns>51Testing软件测试网&wQBdc~x
/// The largest number in the given list51Testing软件测试网1?{ g)~Gh*P7l;g
/// </returns>51Testing软件测试网XP+w2Yu#`;gZR
///51Testing软件测试网f#N+acw@L,S
public static int Largest(int[] list) {51Testing软件测试网Vf2X5hZKn/F
int index, max=Int32.MaxValue;51Testing软件测试网x$T?,I"QK;w
for (index = 0; index < list.Length-1; index++) {
'UopK Uke5pi0 if (list[index] > max) {
fpo qp[}0 max = list[index];
NLB6CD0 }
x#C)y?(qQ0 }51Testing软件测试网SuQ^,r.d's
return max;51Testing软件测试网
?3RS1~g&wz8A
}
5x3F1w?5~$v2p8JC4l9Hg0}
)} e-ljg3|6_ d[0 现在,我们对测试是有些了解了吧,我们下面就要学习使用NUnit框架来实现c#的测试。51Testing软件测试网XE)OX!rRc
r]%@r
51Testing软件测试网ZjH(m*x/y0^z2~
.H1}7|Y:H
t `I(a0
mf.jvkL051Testing软件测试网M
z ao_7H
~转载请注明出自zibeike的blog:http://www.51testing.com/?3486651Testing软件测试网k_ u
cw
51Testing软件测试网'o/G2F&I7{s
相关阅读:
- 51Testing丛书连载:(七) 互联网单元测试及实践 (51testing, 2008-8-05)
- 51Testing丛书连载:(八) 互联网单元测试及实践 (51testing, 2008-8-14)
- 51Testing丛书连载:(九) 互联网单元测试及实践 (fishy, 2008-8-15)
- 如何使用CppUnit进行单元测试 (51testing, 2008-8-16)
- 什么是桩和驱动 (51testing, 2008-8-16)
- 51Testing丛书连载:(十) 互联网单元测试及实践 (51testing, 2008-8-19)
- 51Testing丛书连载:(十一) 互联网单元测试及实践 (51testing, 2008-8-21)
- 单元测试的重要性 (fishy, 2008-8-21)
- 集成测试与单元测试的联系 (caption, 2008-8-22)
- 51Testing丛书连载:(十二) 互联网单元测试及实践 (fishy, 2008-8-25)
收藏
举报
TAG:
单元测试
白盒测试