初次使用单元测试后的体会

发表于:2014-8-20 10:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:ProJKY    来源:51Testing软件测试网采编

  我们搞开发的往往觉得自己写的代码没问题,用不着测试,以前,我也这么认为,觉得测试浪费时间,也就没仔细研究过测试。
  最近,闲来想试试单元测试,结合之前的编程经验,发现,单元测试至少是保证软件质量的最佳方式之一。一波一波程序员开发、维护一个产品,程序员之间的差别太大了,就像“明显没有错误”和“没有明显错误”的区别,怎么来保证产品在不断迭代中的质量,保留里面正确的部分,去掉bug呢?架构设计里面讲究面向接口,单元测试就能起到接口的作用。
  通过单元测试的类,它的行为是符合当初单元设计的目标的。只要编写单元测试时,从多方面检验类的行为,就能确保在这样的情景下,类是符合设计的。在Vistual Studio中,最简单的单元测试就是使用本身自带的功能(不需要从网上找NUnit的程序集,直接在项目上引用"Microsoft.VisualStudio.QualityTools.UnitTestFramework"程序集就ok了)。还有另外一个好处,是方便调试。单元测试项目可以在测试运行时,对被测试类下断点,非常节约调试时间。
  我是这么做的,单元测试的代码放到独立的项目中去,引用要测试的项目,在被测试项目中添加Assembly特性如下:
  [assembly: InternalsVisibleTo("Projky.UnitTests")]
  这样,单元测试就能对被测试项目中internal修饰符的类可见,又不破坏程序集的可见性。
  举一个简单的需求,要将如“30d9132169211a45”或者“30-D9-13-21-69-21-1A-45”或者“30 D9 13 21 69 21 1A 45”这样的16进制字符串转换为Byte[]数组。设计了一个ByteString的类来实现需求。
internal class ByteString {
public static Byte[] ConverterToBytes(string value) {
if (value.IndexOf("-") > -1) {
value = value.Replace("-", "");
} else if (value.IndexOf(" ") > -1) {
value = value.Replace(" ", "");
}
Debug.Assert(value.Length % 2 == 0, "Invalid byte string length.");
List<Byte> list = new List<Byte>(value.Length / 2);
for (int i = 0; i < value.Length; i += 2) {
int bHi = GetInteger(value[i]);
int bLow = GetInteger(value[i + 1]);
Byte temp = (Byte)(bHi << 4 | bLow);
list.Add(temp);
}
return list.ToArray();
}
static int GetInteger(char ch) {
if (Char.IsDigit(ch)) {
return ch - '0';
}
int value = 10;
switch (ch) {
case 'a':
case 'A':
value = 10;
break;
case 'b':
case 'B':
value = 11;
break;
case 'c':
case 'C':
value = 12;
break;
case 'd':
case 'D':
value = 13;
break;
case 'e':
case 'E':
value = 14;
break;
case 'f':
case 'F':
value = 15;
break;
default:
throw new NotSupportedException(ch.ToString() + " is not valid char.");
}
return value;
}
}
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号