離弦之Ray

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

          #

          要做軟工作業(yè)了,把以前的東西要翻出來了。

          本來想馬上配好myeclipse+jboss+mysql的,但不知道是什么原因老是說配置錯(cuò)誤。網(wǎng)上也找到了類似的錯(cuò)誤,但也沒有很好的解答。

          逼的我沒辦法,只好重裝jdk,終于行了,但要睡覺咯……因?yàn)楹竺孢€有考試。
          posted @ 2006-06-14 00:41 離弦之ray的技術(shù)天空 閱讀(239) | 評論 (0)編輯 收藏

          import junit.framework.*;
          public class TestSimple extends TestCase{
          ?? public TestSimple(String name){
          ????????? super(name);
          ???? }
          ?? public void testAdd(){
          ??????????? assertEquals(2,1+1);
          ???? }
          }
          這是最簡單的JUnit框架,你可以在一個(gè)測試方法里面加多個(gè)斷言,但只要一個(gè)斷言出問題了,下面的斷言就不執(zhí)行咯。

          但是調(diào)用其它測試類甚至一個(gè)測試系統(tǒng)該怎么辦呢?
          其實(shí)每個(gè)測試類都包含了一個(gè)
          public static Test suite()方法,如果你沒顯式地實(shí)現(xiàn)它,系統(tǒng)會(huì)自動(dòng)運(yùn)行以test開頭的方法

          import junit.framework.*;
          public class TestSimple extends TestCase{
          ?? public TestSimple(String method){
          ????????? super(method);
          ???? }
          ?? public void testA(){
          ????????????……
          ???? }
          ?? public void testB(){
          ????????????……
          ???? }
          ?? public void testC(){
          ????????????……
          ???? }
          ?? //如果你只想運(yùn)行A和B 那么要這樣寫
          ?? public static Test suite(){
          ??????? TestSuite suite = new TestSuite();
          ??????? suite.addTest(new TestSimple("testA"));
          ??????? suite.addTest(new TestSimple("testB"));
          ????????return suilte;
          ??? }
          }

          甚至有更高層的調(diào)用
          suite.addTestSuite(TestClassOne.class);
          suite.addTestSuite(TestClassTwo.suite());

          仔細(xì)觀察這兩句的調(diào)用方法和參數(shù)哦,應(yīng)該不用多說什么了吧……
          posted @ 2006-06-12 18:48 離弦之ray的技術(shù)天空 閱讀(369) | 評論 (0)編輯 收藏

          這個(gè)博客有點(diǎn)像讀書筆記了,這樣也挺好的,看一遍書,再總結(jié)一下重要的內(nèi)容。



          大家多多捧場啊
          posted @ 2006-06-12 00:51 離弦之ray的技術(shù)天空 閱讀(183) | 評論 (1)編輯 收藏

          ??????? 在上一篇中已經(jīng)看到了assertEquals斷言,還有其它斷言嗎?它們的原型又是怎樣的呢?

          ??????? 首先是assertEquals
          ??????? 它的函數(shù)原型是assertEquals([String message],expected,actual)其中String message 是可選的。這樣就比較清楚啦,expected 是期望的值,而actual是事實(shí)上運(yùn)行后得到的值。如果這兩個(gè)值吻合,那么這個(gè)測試就通過了,Eclipse里面會(huì)出現(xiàn)一個(gè)綠色的長條,看到它是心曠神怡啊。否則,長條就是紅色的,就要去改程序啦。

          ???????? 接下來介紹其它幾個(gè)斷言。
          ???????? assertNull([String message],java.lang.Object object?)?這是判斷對象是否為空
          ???????? 相對的
          ???????? 還有一個(gè):
          ???????? assertNotNull([String message],java.lang.Object object)這是判斷對象是否不為空

          ???????? assertSame([String message],expected,actual)判斷expected 和actual引用的是否為同一個(gè)對象

          ???????? assertTrue([String message],boolean condition)判斷條件是否為true

          ???????? 當(dāng)然還有assertFalse啦

          ????????? 另一個(gè)比較另類的函數(shù)是fail([String message])其中String message 是可選的。
          ????????? 這個(gè)斷言會(huì)讓測試立即失敗,主要用在某個(gè)不應(yīng)該被到達(dá)的分支,比如在一個(gè)預(yù)期發(fā)生的異常之后。
          posted @ 2006-06-12 00:50 離弦之ray的技術(shù)天空 閱讀(482) | 評論 (0)編輯 收藏

          ???? 閑逛東大浦口圖書館,看到《單元測試之道——java版》,早已聞此書之大名,借來一閱。

          ??????JUnit有多重要等等就不多說了,如果你想接觸它,Come on,書上有個(gè)簡單的例子。下面是一個(gè)被測試的例子:

          public class Largest {
          ???? public static int largest(int[] list)
          ??? {
          ????????? int index, max = Integer.MAX_VALUE;
          ??????????for(index=0;index<list.length-1;index++){
          ????????? if(list[index]>max)max=list[index];
          ????????? }
          ???????? return max;
          ??????? ?}
          }
          這是一段有錯(cuò)誤的程序,明眼人應(yīng)該能看出來,以它來說明JUnit的用法。
          我使用的Eclipse 3.1 ,JDK是1.4.2版本的。

          在此工程里新建一個(gè)JUnit Test Case(JUnit在整個(gè)工程中所占的位置在后面有說暫時(shí)就隨意了,可以放在被測程序同一個(gè)package內(nèi),也可以重新新建一個(gè)package)

          剛生成的Test Case是如下這樣的
          package com.test.ray;

          import junit.framework.TestCase;

          public class TestLargest extends TestCase {
          }
          標(biāo)記紅色是因?yàn)檫@是一個(gè)test case 一定要繼承的,而上面引用進(jìn)來的junit.framework.TestCase包含了一個(gè)TestCase的具體框架。

          跟普通的類一樣,它需要一個(gè)構(gòu)造函數(shù)。
          public TestLargest(String name)
          ?{
          ??super(name);
          ?}
          其中的name到底是什么,下一篇再講。
          接下來就可以寫測試函數(shù)了,如果你想讓自己寫的測試函數(shù)自動(dòng)被編譯器運(yùn)行的話,請務(wù)必以test作為方法名的開頭。
          public void testSimple()
          ?{
          ??assertEquals(9,Largest.largest(new int[]{7,8,9}));
          ??assertEquals(-7,Largest.largest(new int[]{-8,-7,-9}));
          ?}

          測試方法體一般是有斷言組成的(關(guān)于斷言的內(nèi)容,以后再講),第一個(gè)斷言主要是測試邊界的,可以看到9位于數(shù)組的最后,運(yùn)行后可以在Eclipse里面看到一個(gè)紅條,會(huì)有相關(guān)的錯(cuò)誤信息。
          junit.framework.AssertionFailedError: expected:<9> but was:<2147483647>
          ?從此你可以分析到,程序中循環(huán)語句判斷條件應(yīng)該是index<list.length,哈哈,一個(gè)錯(cuò)誤找到了。

          可是改過之后還是有錯(cuò)
          仔細(xì)看看……
          God,max的初始化!!!
          可能很多人會(huì)想當(dāng)然地把它改成max=0;
          讓我們看看接下來會(huì)發(fā)生什么。
          junit.framework.AssertionFailedError: expected:<-7> but was:<0>
          知道為什么了嗎?如果數(shù)組里面有負(fù)數(shù),得到的結(jié)果當(dāng)然是0了。
          應(yīng)該是這樣max=Integer.MIN_VALUE;
          測試順利通過!

          其實(shí)這個(gè)程序還是有漏洞的,就是如果傳入的數(shù)組是一個(gè)空數(shù)組的情況,可以這樣改寫
          public class Largest {
          ?public static int largest(int[] list)
          ?{
          ??int index, max = Integer.MIN_VALUE;
          ??if(list.length==0){throw new RuntimeException("Empty list");}
          ??for(index=0;index<list.length;index++)
          ??{
          ???if(list[index]>max)max=list[index];
          ??}
          ??return max;
          ?}
          }

          對應(yīng)的Test Case也改變一下
          public class TestLargest extends TestCase {
          ?public TestLargest(String name)
          ?{
          ??super(name);
          ?}
          ?public void testSimple()
          ?{
          ??assertEquals(9,Largest.largest(new int[]{7,8,9}));
          ??assertEquals(-7,Largest.largest(new int[]{-8,-7,-9}));
          ?}
          ?public void testEmpty()
          ?{
          ??try{
          ???Largest.largest(new int[]{});
          ???fail("lallal");
          ???}catch(RuntimeException e){System.out.println("cuo la!");}
          ?}
          }
          增加了一個(gè)測試數(shù)組為空的測試方法,從Test Case下面的Console中可以知道Test Case 已經(jīng)捕獲了這個(gè)異常。

          好了,今天就寫到這里,下次有更精彩的內(nèi)容哦。

          ?

          posted @ 2006-06-11 00:26 離弦之ray的技術(shù)天空 閱讀(369) | 評論 (0)編輯 收藏

          僅列出標(biāo)題
          共11頁: First 上一頁 3 4 5 6 7 8 9 10 11 下一頁 
          主站蜘蛛池模板: 辽宁省| 响水县| 邯郸县| 曲麻莱县| 明水县| 特克斯县| 巧家县| 四平市| 胶南市| 雷波县| 临夏市| 屯门区| 扎兰屯市| 慈溪市| 大田县| 政和县| 沂源县| 和林格尔县| 左贡县| 开平市| 驻马店市| 湖州市| 手机| 宣武区| 竹北市| 西平县| 稷山县| 南充市| 普兰店市| 通江县| 灵寿县| 上思县| 阿克陶县| 柘荣县| 凤山县| 荔波县| 武定县| 保山市| 乌鲁木齐市| 洮南市| 大城县|