单元测试之道——基于junit的java单元测试 的读书笔记与思考

第二章 你的首个单元测试

这一张已经忘了差不多,如何去测试,其实首先还是得先去考虑怎么去测试,这个就需要看代码单元的需求了。
一个简单的例子。测试排序

assert  9 = Largest.getLargest(1,3,9);
assert 9  = Largest.getLargest(3,9,7);    //多个测试,更能够防止错误。

其实上面的想法,很简单,更主要的是意识,意识真的很重要,我刚打赌,很多不用单元测试的人,压根可能想不到上面那格简单的方式。自嘲一下,我开始看时就感叹了一下。单元测试不麻烦。像这种测试,真的及其重要。有时候不小心改了一些东西,导致了错误,单元测试一下子就能够帮你发现。
另外单元测试能够帮助你快速定位bug。

第三章 使用JUnit 进行单元测试。

jUnit java 测试框架。实现junit 进行测试。
利用junit 中的各种断言进行判断。ps:随着知识的增长,我越来越觉得之前看的一些,不懂其用意的东西,现在觉得真的是非常秒。比如说我之前看到HMM模型里面的源码,就有一些test 。当时不知其目的跟意义。
junit 测试框架。基本就是实现testcase 类,然后添加test方法。代码大致如下:

class TestCaseExample1 extand TestCase{

    public TestCaseExample1(){
        super("AndroidTestCaseExample1");
    }

    //just a test example
    public void testPlus(){
        assertEquals(2,1+1);
    }
}

ps:举一反三一下(想到一句老话:看的东西有限,不多想想,你一辈子会的东西也会就是那么多了),android 测试框架类似。不过是使用AndroidTestCase. Example :

class AndroidTestCaseExample1 extand AndroidTestCase{

    public AndroidTestCaseExample1(){
        super("AndroidTestCaseExample1");
    }
    /*
     * 完全可以测试android里面使用的一些类。比如说像我使用的,自己写的网络数据获取的类。使用这个来测试就非常合适。
     */
    public void testPlus(){
        assertEquals(2,1+1);
    }

    public void testCOntext(){
        Context context = getContext();
    }
}

如果想要测试android Activity的话 可以使用InstrumentationTestCase,继承改类。

测试类也有一个很好的东东,suite()想想,有时候尝试测试多个的testcase 的时候,把所有的testcase 都在一个里面运行,不是方便很多了么? ps:运行测试case 的时候,是运行一个testcase。 so, suite 能够方便我们将多个testcase 一起测试。使用范例是:
public static Test suite(){
TestSuite suite = new TestSuite();
suite.addTest(new TestCaseTwo(“tests”);
//另外一种方式
suite.addTestSuie(TestClassOne.class);
}

另外一个比较实用的是setUp() tearDown();
setUp() 会在每个测试函数前面运行,tearDown()在测试函数后面执信,每个测试函数都会如此。

另外有一个per-suite Setup 和 Tear-down(); 能够在每个TestCase 前面和后面测试。对应的函数是onTimesetUp() onTimeTearDown();
可以同时使用它们

在suie 中 使用,如下方式,加入 per-suite setup teardown

TestSetup wrapter = new TestSetup(suite){
    protected void setUp(){
        onTimeSetUp();
    }
    protected void tearDown(){
        onTimeTearDown();
    }
}

最后就是使用自己的断言了。其实,最好实现一个自己的TestCase 供自己在项目中继承使用,这样以后需要添加什么测试,就会方便很多了。即使现在这个自定义的基类没有实现一个方法。

测试中出现的异常是个好东西。要有这种想法。

测试骨架

import
extend testcase
调用 super(string);

2013/12/7 0:12:15