想飛就別怕摔

          大爺的并TM罵人

          Junit簡單例子

          本例是加減乘除計算
          先看一個簡單的類Calculator.java:
           1package com.test.junit;
           2/**
           3 * 
           4 * 數學計算
           5 *
           6 */

           7public class Calculator {
           8    public int add(int a,int b){
           9        return a + b;
          10    }

          11    public int minus(int a,int b){
          12        return a - b;
          13    }

          14    public int multiply(int a, int b ){
          15        return a * b;
          16    }

          17    public int divide(int a , int b )throws Exception
          18    {
          19        if(0 == b){
          20            throw new Exception("除數不能為零");
          21        }

          22        return a / b;
          23    }

          24/*    
          25 * 一下是不用IDE給我們提供的Junit,用Junit本身去測試的3個方法。
          26    public static void main (String[]args){
          27        junit.textui.TestRunner.run(CalculatorTest.class);
          28        junit.swingui.TestRunner.run(CalculatorTest.class);
          29        junit.awtui.TestRunner.run(CalculatorTest.class);
          30    }
          31*/

          32}

          下面我們看看傳統的JUnit的TestCase:
          CalculatorTest.java:
           1package com.test.junit;
           2
           3import junit.framework.Assert;
           4import junit.framework.TestCase;
           5/**
           6 * Keep the bar green to keep the code clean
           7 * 
           8 *在Junit3.8中必須繼承TestCase類
           9 *
          10 *單元測試不是證明您是對的,而是證明您沒有錯
          11 */

          12public class CalculatorTest extends TestCase {
          13    /**
          14     * 在Junit3.8中,測試方法滿足如下原則
          15     * 1)public
          16     * 2)void 
          17     * 3)無方法參數
          18     * 4)最重要的方法名稱必須以test開頭
          19     */

          20    private Calculator cal;
          21    
          22    //在執行每個test之前,都執行setUp;
          23    public void setUp(){
          24         cal = new Calculator();
          25    }

          26    
          27    //在執行每個test之后,都要執行tearDown
          28    public void tearDown(){
          29    }

          30
          31    public void testAdd()
          32    {
          33//        Calculator cal = new Calculator();
          34        int result = cal.add(12);
          35        //斷言assert
          36        Assert.assertEquals(3, result);
          37    }
           
          38    
          39    public void testMinus()
          40    {
          41//        Calculator cal = new Calculator();
          42        int result = cal.minus(52);
          43        Assert.assertEquals(3, result);
          44    }

          45    
          46    public void testMultiply()
          47    {
          48        Calculator cal = new Calculator();
          49        int result = cal.multiply(42);
          50        Assert.assertEquals(8,result);
          51    }

          52    
          53    public void testDivide()
          54    {
          55//        Calculator cal = new Calculator();
          56        int result = 0;
          57        try {
          58            result = cal.divide(10,5);
          59        }
           catch (Exception e) {
          60            e.printStackTrace();
          61            //我們期望result = cal.divide(10,5);正常執行;如果進入到catch中說明失敗;
          62            //所以我們加上fail。
          63            Assert.fail();//如果這行沒有執行。說明這部分正確。
          64        }

          65        Assert.assertEquals(2,result);
          66    }

          67    
          68    public void testDivide2()
          69    {
          70        Throwable tx = null
          71        try 
          72        {
          73//            Calculator cal = new Calculator();
          74            cal.divide(10,0);
          75            //正常來講cal.divide(10,0);已經拋出異常,之后的代碼不會被執行。
          76            //我們也期望是這樣的。所以說如果下面的Assert.fail();執行了。
          77            //我的的測試就失敗了。
          78            Assert.fail();//當執行到這里測試失敗,后面的代碼將不被執行。
          79        }
           catch (Exception e) {
          80            tx = e;
          81        }

          82        Assert.assertNotNull(tx);//斷言tx不為空。也就是說肯定有異常。
          83        Assert.assertEquals(Exception.class,tx.getClass());//斷言tx的類型為Exception類型
          84        Assert.assertEquals("除數不能為零", tx.getMessage());
          85    }

          86}

          本例中只有一個測試類。不過在開發過程中隨著項目的壯大,測試類也會越來越多。我們總不能每次測試都去挨個的執行每個test類吧。所以我們要寫個總體的test類:
          代碼如下:
           1package com.test.junit;
           2
           3import junit.framework.Test;
           4import junit.framework.TestCase;
           5import junit.framework.TestSuite;
           6
           7public class TestAll extends TestCase {
           8    public static Test suite()
           9    {
          10        TestSuite suite = new TestSuite();
          11         suite.addTestSuite(CalculatorTest.class);//加入你所想測試的測試類
          12         
          13         return suite;
          14    }

          15}

          posted on 2008-11-25 17:22 生命的綻放 閱讀(5342) 評論(1)  編輯  收藏 所屬分類: JUnit

          評論

          # re: Junit簡單例子[未登錄] 2012-07-14 09:32 啊啊

          共 產 黨  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(5)

          隨筆分類(94)

          隨筆檔案(93)

          文章分類(5)

          文章檔案(5)

          相冊

          JAVA之橋

          SQL之音

          兄弟之窗

          常用工具下載

          積分與排名

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 右玉县| 沙河市| 义乌市| 师宗县| 湖南省| 通辽市| 蓝山县| 顺义区| 新泰市| 富蕴县| 化德县| 海伦市| 临江市| 太和县| 铜梁县| 德保县| 潼南县| 永德县| 博罗县| 耒阳市| 沂南县| 抚顺县| 策勒县| 儋州市| 安远县| 博客| 佛山市| 西丰县| 泽普县| 汝南县| 台湾省| 井冈山市| 通州区| 泰和县| 织金县| 克拉玛依市| 天门市| 扶风县| 南宫市| 五大连池市| 福海县|