免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: 布布

求救:关于抽象类 abstract class [复制链接]

论坛徽章:
0
发表于 2006-04-12 16:43 |显示全部楼层
建议mm们,看看相关入门书籍,应该更好些。

论坛徽章:
0
发表于 2006-04-12 18:28 |显示全部楼层
以下是一些抄来的代码, 挺简单的. 看MM好像刚入门, 学习正好, 就贴上来了.
我们作一个HelloWorld的测试
测试方法:
        HelloWorld.sayHello()是否执行正常,并且结果也符合要求
        HelloWorld.add()方法是否与我们预期一样执行

根据测试方案,我们编写测试案例
        package com.yjsoft.app;
        public class HelloWorld {
                public static void main(String[] args) {
                }
                public String sayHello(){
                        return "Hello world.";
                }
                public int add(int nA,int nB){
                        return nA+nB;
                }
        }

开始为此编写TestCase
        先设置属性,设置Libraries,将Junit.Jar加入
        创建TestCase测试工程
        创建测试案例类
        选择要测试的方法
        编写测试代码:
           package com.yjsoft.test;
        import junit.framework.Assert;
        import junit.framework.TestCase;
        import com.yjsoft.app.HelloWorld;
        public class HelloWorldTest extends TestCase {
                public HelloWorldTest(String arg0) {
                        super(arg0);
                }
                public static void main(String[] args) {
                        junit.swingui.TestRunner.run(HelloWorldTest.class);
                }
                public void testSayHello() {
                        HelloWorld world=new HelloWorld();
                        //Assert.assertNull(world);
                        assertEquals(world.sayHello(),"Hello World");
                }
                public void testAdd() {
                        HelloWorld world=new HelloWorld();
                        //Assert.assertNull(world);
                        Assert.assertEquals(world.add(1,2),3);
                }
        }
       

        测试
        发现失败,方法为sayHello(),看看具体信息“应为Hello word. 却发现 Hello World”
        修改测试函数
           assertEquals(world.sayHello(),"Hello world.");
        测试,通过

论坛徽章:
0
发表于 2006-04-12 19:37 |显示全部楼层
抽象方法是没办法测试的,就像接口没办法测试。---- 为什么? 没代码测个啥呀!
私有类和私有方法是不能测试的。 ----- 为什么? 你又不知道有这个方法!
抽象类是不能实例化的,所以没办法直接测试,但可以间接测试。——测试继承了它的实体类。也可以 MOCK 一个对象(就是自己写个类,继承这个抽象类),然后测试 MOCK 类的方法。
写一个抽象类,如:

  1. abstract class HelloWord
  2. {
  3.       public String add(String s1, String s2) {
  4.             return new String(s1 + s2);
  5.       }
  6. }
复制代码

自己写一个继承它的类:

  1. public class HelloWordSon extends HelloWord
  2. {
  3.        //里面什么都不用写就行了。
  4. }
复制代码

测试方法:

  1. class TestHelloWord extends TestCase
  2. {
  3.        //可以写setUp() 和 tearDown()
  4.        public void testAdd()
  5.        {
  6.                String s1 = "hello ";
  7.                String s2 = "world!";
  8.                HelloWordSon hw = new HelloWorldSon();
  9.                assert.equals(s1 + s2, hw(s1, s2) );
  10.        }
  11. }
复制代码

以上代码是直接在论坛上编的,不保证可运行。只为说明思想。

论坛徽章:
0
发表于 2006-04-12 21:02 |显示全部楼层
原帖由 艾斯尼勒 于 2006-4-12 13:36 发表



汗。。。咋想说明白点东西这么难呢?我觉得我理解啊
觉得我是概念说错还是表述不清?这对我挺重要谢谢

嗯。昨晚咪咪糊糊的,写错了一句话,可我还是觉得挺明白了啊,为什么会看晕呢,这个真 对我挺重要 ...

我以为你到那个文档里面抄了几句贴过来的呢,也许说得重一些了请你原谅。看出来你是搞教育的了,因为你的解释从理论上来说没有错,不过我个人不太喜欢这样的回答。因为这种纯理论性的解释,对于学习的新人帮助不大,有时候要知其然,更要知其所以然,我觉得我当初学习这些概念的时候,一直有个问题困扰我:究竟什么时候,什么地方应该用抽象类?如果我搞不懂这个道理的,不能把这个知识点用在合适的地方的话,就算把概念背得烂熟于胸,还是等于没学会这个知识点。

论坛徽章:
0
发表于 2006-04-12 21:19 |显示全部楼层
谢谢各位了~~~~
我这周就去买书
好好学习 天天向上~~~

论坛徽章:
0
发表于 2006-04-12 21:25 |显示全部楼层
原帖由 布布 于 2006-4-12 08:47 发表
先谢谢大家了
我对这块儿确实不懂 所以还是希望各位能讲的明白些~~~~~
给大家一个例子 麻烦大家帮我看一下 这个该怎么测试
    public final DataInfo getRecord(final int recNum)
        throws FlightE ...



像以上这种代码,跟本就没必要测,它的正确与否完全取决于它里面调用的这个方法!
只要测试调用的这个方法就行了。

[ 本帖最后由 chouy 于 2006-4-12 21:36 编辑 ]

论坛徽章:
0
发表于 2006-04-12 21:34 |显示全部楼层
原帖由 perryhg 于 2006-4-12 21:02 发表

我以为你到那个文档里面抄了几句贴过来的呢,也许说得重一些了请你原谅。看出来你是搞教育的了,因为你的解释从理论上来说没有错,不过我个人不太喜欢这样的回答。因为这种纯理论性的解释,对于学习的新人帮助不 ...



呵呵,看来教育还是得注重方法,结合代码和实验效果会好些,纯粹说教帮助的确不大,我还得调整
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP