» 您尚未 登录   注册 | 社区服务 | FTP中心 | 帮助 | 社区 | 无图版 | 测试百科  | 测试Blog 
软件测试基地论坛 -> 测试开发技术 -> [转帖]测试代码在实际类的内部写还是外部写的思考
 XML   RSS 2.0   WAP 

--> 本页主题: [转帖]测试代码在实际类的内部写还是外部写的思考 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题
Fastpoint


该用户目前不在线
级别: 总版主
精华: 44
发帖: 5033
基地声望: 390 点
基地币: 1687 Bug
基地贡献: 0 点
好评度: 15 点
在线时间:818(小时)
注册时间:2005-10-08
最后登录:2008-07-22
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子

[转帖]测试代码在实际类的内部写还是外部写的思考

引用:http://www.cnblogs.com/William_Fire/articles/102241.html

在我的<<也谈测试驱动开发>>里,提出了对方法级别的测试应该在实际代码的旁边来写的建议。
  不同的博客有不同的看法,我尊重大家的意思,但某些问题似乎不是提得很明确,也可能是因为文中说得不够清楚,这里我来简单地澄清一下。

  在一个类内写实际的代码与测试性的代码,可以采用如下的形式:
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这样的宝贝:)
  既然用了工具,我们就是充分使用,发挥它最大的作用,这样才能提高生产效率。
        关于,代码中的清晰性与耦合度的问题,我下一篇随笔再提及。




[ 此贴被Fastpoint在2005-12-22 17:42重新编辑 ]


可不可不要这么样徘徊在目光内
你会察觉到我根本寂寞难耐
即使千多百个深夜曾在梦境内
我有吻过你这毕竟并没存在

人声车声开始消和逝
无声挣扎有个情感奴隶
是我多么的想她
但我偏偏只得无尽叹谓

其实每次见你我也着迷
无奈你我各有角色范围
就算在寂寞梦内超出好友关系
唯在暗里爱你暗里着迷
无谓要你惹上各种问题
共我道别吧别让空虚使我越轨
[楼 主] | Posted: 2005-12-22 17:35 顶端
Fastpoint


该用户目前不在线
级别: 总版主
精华: 44
发帖: 5033
基地声望: 390 点
基地币: 1687 Bug
基地贡献: 0 点
好评度: 15 点
在线时间:818(小时)
注册时间:2005-10-08
最后登录:2008-07-22
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子



其实Junit一直提倡测试代码独立写成一个测试包,如果现在很多的java IDE都在建立Project时自动产生:

Project
|
---src
|
---test

你可以把很多的Testcase写到test包下,我个人觉得这样处理比.net的预处理使用#DEBUG好多了,真正的做到业务代码、测试代码分开!


可不可不要这么样徘徊在目光内
你会察觉到我根本寂寞难耐
即使千多百个深夜曾在梦境内
我有吻过你这毕竟并没存在

人声车声开始消和逝
无声挣扎有个情感奴隶
是我多么的想她
但我偏偏只得无尽叹谓

其实每次见你我也着迷
无奈你我各有角色范围
就算在寂寞梦内超出好友关系
唯在暗里爱你暗里着迷
无谓要你惹上各种问题
共我道别吧别让空虚使我越轨
[1 楼] | Posted: 2005-12-22 17:40 顶端
jameswang




该用户目前不在线
级别: 论坛版主
精华: 0
发帖: 66
基地声望: 24 点
基地币: 383 Bug
基地贡献: 10 点
好评度: 2 点
在线时间:28(小时)
注册时间:2005-12-20
最后登录:2007-01-17
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子



楼主贴的贴子的想法比较独特。但是,我觉得笔者没有解释清楚自己的观点。
例如,“可以避免很多问题”,那么到底是什么问题?

我同意楼主的观点,测试代码应该与被测代码分离。


孤独是一个人的狂欢
[2 楼] | Posted: 2005-12-23 09:09 顶端
ilovejolly




该用户目前不在线
级别: 测试新手
精华: 2
发帖: 43
基地声望: 20 点
基地币: 6652 Bug
基地贡献: 6 点
好评度: 0 点
在线时间:45(小时)
注册时间:2005-10-20
最后登录:2006-07-22
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子



写在内部还是外部这么重要吗?该用什么样的组织方式应该是自然而然的事
[3 楼] | Posted: 2005-12-23 09:17 顶端
Fastpoint


该用户目前不在线
级别: 总版主
精华: 44
发帖: 5033
基地声望: 390 点
基地币: 1687 Bug
基地贡献: 0 点
好评度: 15 点
在线时间:818(小时)
注册时间:2005-10-08
最后登录:2008-07-22
查看作者资料 发送短消息 推荐此帖 引用回复这个帖子



按道理说应该,并且一定要写在外部,发布给最终客户的jar中是不包含测试代码的。

可不可不要这么样徘徊在目光内
你会察觉到我根本寂寞难耐
即使千多百个深夜曾在梦境内
我有吻过你这毕竟并没存在

人声车声开始消和逝
无声挣扎有个情感奴隶
是我多么的想她
但我偏偏只得无尽叹谓

其实每次见你我也着迷
无奈你我各有角色范围
就算在寂寞梦内超出好友关系
唯在暗里爱你暗里着迷
无谓要你惹上各种问题
共我道别吧别让空虚使我越轨
[4 楼] | Posted: 2005-12-23 11:14 顶端

软件测试基地论坛 -> 测试开发技术




软件测试基地上海测仕信息技术有限公司旗下网站
Copyright © 2005-2007 Cntesting.com, All Rights Reserved
沪ICP备06057721号

Powered by PHPWind Code © 2003-06 PHPWind
Total 0.147105(s) query 5, Time now is:12-04 05:44, Gzip disabled
You can contact us


每日一句:Loading...