测试代码在实际类的内部写还是外部写的思考
2005-01-09 18:38
295 查看
在我的<<也谈测试驱动开发>>里,提出了对方法级别的测试应该在实际代码的旁边来写的建议。
不同的博客有不同的看法,我尊重大家的意思,但某些问题似乎不是提得很明确,也可能是因为文中说得不够清楚,这里我来简单地澄清一下。
在一个类内写实际的代码与测试性的代码,可以采用如下的形式:
using System;
if #DEBUG
using NUnit.Framework;
endif
if #DEBUG
[TestFixture]
endif
public class Sample
{
public Sample();
#region 将测试代码写在这个块里面
if #DEBUG
[Test]
public void 测试用例
{
Sample sample = new Sample();
Assert.IsTrue(sample.sum(1,1)==2);
Assert.IsTrue(sample.sum(1,2)==3);
Assert.IsTrue(sample.sum(0,9)==9);
}
public int 求和(int a,int b)
{
return sum(a,b)
}
#endif
#endregion
private int sum(int a,int b)
{
return a+b;
}
}
这是对sum方法进行测试的一个例子,上面用彩色标记出来的方法,是在预编译指令中写的,在不破坏sum函数的合理封装性的前提之下,仍然能够对sum函数进行测试,同时这样也避免了许多问题的出现。
测试应该只关注输入与输入与输出,采用白盒测试,更多的情况是为了寻找并验证代码的逻辑,用于寻找造成bug之所在的代码(既然要敏捷,就不要受局限)。
Java中没有把它们写在一起,更多的原因是,Java的编辑器中,很少有Visual Studio.net2003这样的好东本,并提供#region...#endregion这样的宝贝:)
既然用了工具,我们就是充分使用,发挥它最大的作用,这样才能提高生产效率。
关于,代码中的清晰性与耦合度的问题,我下一篇随笔再提及。
不同的博客有不同的看法,我尊重大家的意思,但某些问题似乎不是提得很明确,也可能是因为文中说得不够清楚,这里我来简单地澄清一下。
在一个类内写实际的代码与测试性的代码,可以采用如下的形式:
using System;
if #DEBUG
using NUnit.Framework;
endif
if #DEBUG
[TestFixture]
endif
public class Sample
{
public Sample();
#region 将测试代码写在这个块里面
if #DEBUG
[Test]
public void 测试用例
{
Sample sample = new Sample();
Assert.IsTrue(sample.sum(1,1)==2);
Assert.IsTrue(sample.sum(1,2)==3);
Assert.IsTrue(sample.sum(0,9)==9);
}
public int 求和(int a,int b)
{
return sum(a,b)
}
#endif
#endregion
private int sum(int a,int b)
{
return a+b;
}
}
这是对sum方法进行测试的一个例子,上面用彩色标记出来的方法,是在预编译指令中写的,在不破坏sum函数的合理封装性的前提之下,仍然能够对sum函数进行测试,同时这样也避免了许多问题的出现。
测试应该只关注输入与输入与输出,采用白盒测试,更多的情况是为了寻找并验证代码的逻辑,用于寻找造成bug之所在的代码(既然要敏捷,就不要受局限)。
Java中没有把它们写在一起,更多的原因是,Java的编辑器中,很少有Visual Studio.net2003这样的好东本,并提供#region...#endregion这样的宝贝:)
既然用了工具,我们就是充分使用,发挥它最大的作用,这样才能提高生产效率。
关于,代码中的清晰性与耦合度的问题,我下一篇随笔再提及。
相关文章推荐
- 内部链接还是外部链接?
- Android Environment.getExternalStorageDirectory() 获取的是内部存储还是外部存储?
- 编写测试用例时参照实际项目还是需求文档?
- NET中WebBrowser控件内部页面的JS代码与外部C#代码的相互调用
- JavaScript调用App原生代码(iOS、Android)通用解决方案 实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功
- 你正在用左脑还是右脑思考,请测试下就清楚了。
- 【华磊随笔】一个企业的内部讨论(含高层)-“30岁IT人,产出代码还是产出思想”之我见。
- 如何判断一个点是否在多边形内部还是外部
- 公司高层职位空缺 是内部择优还是外部纳贤
- hive查看是外部表还是内部表
- 【华磊随笔】一个企业的内部讨论(含高层)-“30岁IT人,产出代码还是产出思想”之我见。
- 先测试还是先代码
- setInterval()与setTimeOut()写在被控制的函数内部还是外部?
- NUnit的使用(2)——实际测试过程中,程序代码和测试代码是分开的
- 判断这个命令是内部命令还是外部命令
- java环境变量path也配置了,但还是显示javac不是内部或外部命令的解决办法
- 当手头上没有示波器,如何通过代码测试stm32外部晶振是否工作
- js对浏览器内部及外部窗口宽度及高度使用测试
- 【node.js】安装express过程中测试报错:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- php添加了环境变更,还是显示 不是内部或外部命令 (注:添加到目录即可,不加 php.exe