<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    2007年10月25日

    1. install the following software
    jre 1.5 or 1.6,  tomcat 5525, eclipse, axis2

    and in eclipse preferences set tomcat to web server, set jre env and set axis2's runtime

    2. create a java project and add axis2 runtime library to its build library

    test ws client sample code:

    public class TestSms
    {
    private static EndpointReference targetEPR = new EndpointReference(
       "http://cdl:8080/axis2/services/Version");

     public static OMElement getGetLeftElement(){
               OMFactory fac=OMAbstractFactory.getOMFactory();
               OMNamespace omNs=fac.createOMNamespace("此處填寫WS的命名空間","hw");
               OMElement method=fac.createOMElement("WS 方法名",omNs);
               OMElement value = fac.createOMElement("參數一", omNs);
               value.addChild(fac.createOMText(value, "值一"));
               method.addChild(value);
              
               value = fac.createOMElement("參數二", omNs);
               value.addChild(fac.createOMText(value, "值2"));
               method.addChild(value);
              
             
               return method;
        }
          
           public static void main(String[] args){
                  try{
                         Options options=new Options();
                         options.setTo(targetEPR);
                         options.setAction("命名空間/WS 方法名");
                         ServiceClient sender=new ServiceClient();
                         sender.setOptions(options);
                         OMElement sayHello=TestSms.getGetLeftElement();
                         //WSDLConstants.
                        
                         OMElement result=sender.sendReceive(sayHello);
                        
                         OMElement elem = result.getFirstElement();
                         System.out.println(elem.getText());
                         //System.out.println(result);
                  }
                  catch(Exception axisFault){
                         axisFault.printStackTrace();
                  }
           }

    }



    ref: http://zhangjunhd.blog.51cto.com/113473/23690
    posted @ 2007-10-25 20:58 Java,研究之路 閱讀(372) | 評論 (0)編輯 收藏

    2007年3月10日

    2006年11月8日

    2006年4月4日

    最近總是打不開網頁中的JAVA程序, 本來機器上有JAVA開發環境, 重裝系統一般不安裝JAVA,反正設置java_home和path中添加javac/java就可以了. 結果IE總是打不開,也不找到原因. 今天沒辦法了, 要參加一項考試,只好在網上搜索了一下, 原來出問題總是有原因的.

    參考官方幫助: http://www.java.com/zh_CN/download/help/win_offline.xml

    下載jre運行環境.安裝.

    1. 雙擊該圖標打開“Java 控制面板”
    2. 在“Java 控制面板”中選擇“瀏覽器”選項卡
    3. 確保選中“Internet Explorer”、“Netscape”或“Mozilla”旁邊的復選框
    4. 如果尚未選中,請選中對應的復選框,為您的 Web 瀏覽器啟用 JRE
    5. 單擊“應用”按鈕

    Internet Explorer 4.x 及更高版本

    1. 單擊“工具”-->“Internet 選項”
    2. 選擇“高級”選項卡,并向下滾動到“Java (Sun)”
    3. 選中“使用 Java 2 版本”旁邊的復選框
    4. 接下來選擇“安全”選項卡,然后選擇“自定義級別”按鈕
    5. 向下滾動到“Java 小程序腳本”
    6. 確保選中“啟用”單選按鈕。
    7. 單擊“確定”保存您的首選設置。

    最后不要忘了在這里測試一下是否安裝成功: http://www.java.com/zh_CN/download/help/testvm.xml

    posted @ 2006-04-04 22:24 Java,研究之路 閱讀(3234) | 評論 (0)編輯 收藏

    2006年3月10日

    久未在這里練筆了.今天突然想到為什么JAVA在國內始終對初學者而言不容易. 是因為網上的DEMO或示例感覺比.net的少,而且有示例也不是直接能在eclipse或jbuilder中打開的. 一般初學者估計IDE不是很熟悉,因此要把示例代碼運行起來就不容易了, 更何況要分析別人的代碼. 相比之下,.net的示例一般是整個工程,而且由于只有vs IDE,因此提供的示例一般是針對此平臺的, 要學也就容易多了.
    聽說goolge要收購sun java了,如果真是這樣, 應該是一件好事, 又多了一個強有力的競爭者, JAVA的前途就光明了.

    一點個人淺見.
    posted @ 2006-03-10 10:29 Java,研究之路 閱讀(425) | 評論 (1)編輯 收藏

    2005年12月30日


    明天就是2005年最后一天了, 本想休一天假, 只是最近手頭上的項目跟別的公司有關, 脫不了身, 煩燥呀, 準LP又在罵了, 要生存, 沒辦法。
    去年底搞了個今年十大目標,看了一下,沒幾個完成了,估計只有30-40%完成了。

    整天都在忙,不管是公司的事還是自己的研究,這一年就沒有幾天晚上是12點之前睡的,在上一個公司經常是晚上11點回去睡覺,現在這家公司是回去之后繼續搞,所有的業余愛好都沒有了,買了個DC,也沒怎么用,什么都沒有心情,事情總是在那里等著,視力又下降了,身體感覺不如從前了。記憶力也下降了,前一陣子的事都不記得了,只知道這兩天做了些啥。
    雖然又長了一歲,其它到是沒什么長進:

     

    • 五一節前終于換了家公司,計劃之內的事,也算是完成了一項計劃任務;
    • 今年開始聽《余世維》的講座了,學以致用,沒地方用,聽了也沒多少長進;
    • 上周終于把兩年前買的MP3搞懂如何快進了,便宜貨就是不好用;
    • MS出vs2k5,裝上了,也感覺蠻好用,只是機器跑不動了;
    • 開始使用Eclipse開發真正的JAVA項目,發現自己真的是很菜,眼高手低的毛病還是沒改;
    • 常年出差在外,跟準LP吵了無數次,已經是家常便飯了,計劃明年結婚,還不知道是否會途中有變;
    • 聯系上以前的同學,可是要么不敢說話,要么就是沒話說;
    • 那個買的房子還有問題,不是我家里漏水,就是別人家漏水來淹我,唉,人倒霉了擋都擋不??;
    • 周圍的同學和以前的同事要么結婚,要么就是準備當爸媽了,想想自己還在外面打工,感覺自己真是沒多少出息;
    • 還有,想不起來了,。。。

      每天都是新的一天,努力做好現在的事才是最重要的,把去年的計劃拿來改改,爭取在元旦這幾天弄個2006年計劃了,日子再艱難,也得過呀,畢竟這也是一種生活。

     

    posted @ 2005-12-30 15:25 Java,研究之路 閱讀(420) | 評論 (1)編輯 收藏

    2005年12月17日

    最近要在一個項目中使用java, 本來是用.net開發的, 可是驗收時用戶要求用java平臺,只好進行移植工作了. 一直使用的是.net開發, JAVA只是關注, 沒有深入研究, 等實際應用時才發現自己水平有限, 問題一堆.
    把最近碰上的問題做些整理:

    使用JAVA平臺的問題:
    1. 開發工具太多, 什么Eclipse, jbuilder等,各有不同, 讓人熟悉就花時間了, 本為以為對JB比較熟悉,又有2006版本了, 就用它吧, 可是才兩天, 就發現自己的代碼文件中的中文變為亂碼了, 當然網上有一堆解決方案, 只是心里不爽, 直接不用了, 改為eclipse了, 操作界面不是很熟悉, 與VS.NET IDE還是有不少區別, 只是用多了自然就熟悉了,
    又從網上當了一堆插件, 什么tomcat, xml編輯器, 沒有用myeclipse, 雖然支持JSP,以前用過一下, 也不太好用, 其它的就沒找到什么好東西了, 時間也不允許, 至少現在可以調度JAVA代碼了, JSP的調試再說吧.
    2. 開始整的時候,發現自己在WEB開發方面熟悉的是VS的ASPX事件模型, 反而不知道如何處理JSP了, 只好使用以前ASP的模式, 使用form提交, 感覺真是太落伍了, 雖然現在有許多AJAX之類的東西, 也支持客戶端事件模型, 實在沒時間研究這些東西了. 先做出來再說.
    數據庫連接類使用了以前jive中的幾個類, 支持在xml中配置連接等, 再自己寫了一個類, 從XML中讀取SQL語句, 差不多能用.
    3。在網上搜索了一把,未找到在eclipse中對web service支持比較好的plugin,發現版本都比較低,似乎久未更新了,JB下到是有不錯的設計和編譯界面,只是JB其它太爛。


    字符集問題:
    使用java首先就要碰上一個中文字符的顯示和處理問題, 這些問題總是很煩, 要對request進行編碼才能解決.
    既然使用非MS平臺, 數據庫可能就不會用到mssql server了, 使用mysql, 發現要移植以前的數據還是比較容易, 但mysql的驅動實在不好弄, 剛開始使用純JDBC的驅動, 結果發現在中文字符的處理上始終有問題, 只好
    網上查原因, 發現jdbc驅動的版本太低, 在判斷中文字符上有問題, 升級驅動程序, 可以插入和顯示了, 但SQL中是中文, 可是進了數據庫就是亂碼, 試了N遍也不行, 只好改為jdbc-odbc.
    但接下來在執行batch sql時又報錯了, 說mysql odbc driver 的SQL語法錯, 檢查了半天, SQL也能在mysql中執行的, 就是不能通過JAVA提交執行. 用的是mysql 5.0.X, 支持unicode 的編碼建表. 最后只能采用一個折衷的辦法,自己寫一個批量執行SQL的類,采用“;”分隔多個SQL,在調用時仍然一行一行的執行,郁悶。

    最終的字符集解決辦法:
    頁面上要設置字符集的輸出格式,如GBK或GB2312,另外,如果使用統一的包含文件定義輸出字符集,還是不行,必須在每個頁面中單獨定義,也可能是我的INCLUDE方式不對;
    數據庫連接字符串中也要設置編碼;
    在傳遞數據到DB的SQL還要對中文進行編碼;
    String key = new String(request.getParameter("txtKey").getBytes("ISO8859_1"));
    最后還有一個問題是,如果TOMCAT編譯JSP文件生成的JAVA文件有亂碼,那么在訪問的時候頁面上總是要報錯,什么"delete tokens"之類的,此時要刪除掉tomcat\work目錄下的中間編譯代碼才行;


    控件及常用庫
    WEB控件, 網上有一堆各種各樣的lib和控件, 但這些東西太浪費時間, 光是上網找就比較花時間了, 下回來試用也有各種各樣的問題,
    每個控件有自己的特色, 而且每個總是滿足了這個,滿足不了那個需求, 要都滿足, 還是要收費的才行, 畢竟天下沒有多少免費的午餐;
    主要有幾個:
     1。數據顯示表格控件,應該能支持排序,有緩存機制,能分頁,能設置格式,支持ResultSet或ArrayList之類的,還要有導出excel等功能;最好要能簡單使用。
     2。圖表控件,最有名的當然是cewolf/jfreechart,只是要使用它自己定義的DatasetProducer,不能直接使用ResultSet,也是個麻煩事,不過的確是很不錯的控件了。


    小結
    1。經過這次移植,發現JAVA還是有許多很牛的地方,采用hashmap來緩存數據,效率的確很不錯,只是用得太多,缺乏管理機制,有點混亂了,下一階段再重構一下,形成一個管理框架最好;
    2。eclipse開發的確很不錯,與vs ide差別是比較大,只是使用習慣了之后發現其功能強大,而且可以找些plugin來擴展功能,估計我只是看到了點皮毛而已。
    3。在JAVA下開發,使用Javascript太多,還沒找到更好解決辦法,水平有限;
    4。與另一個人一起開發,大家的編程風格和代碼不夠規范,使用了一些重復的類和方法,這在后期維護是個工作,時間太緊,項目總是這樣,就沒得多少提高了;

    個人水平實在有限,上面只是一面之詞,項目月底才結束,有什么變更再補充。

    posted @ 2005-12-17 16:02 Java,研究之路 閱讀(1484) | 評論 (3)編輯 收藏

    2005年10月25日

    不用說,這種事情一般人如果沒有經歷過,或旁邊沒有人經歷過,要想搞得很清楚,一會兒就搞定是不可能的。
    在N天前就到辦證中心去拿了一張清單,上面有需要用到的證明文件。查看了一下家里的百寶箱,差不多都有。趁著8月份的五天請假,星期四的時候去辦理。過程到不是很復雜,只拿了張一式兩聯的準遷證,當時根本就未在意準遷證上的內容,上面有個有效期的說法。這也只能怪自己粗心大意了。有效期是40天,到差不多過了一個月之后即9。10我還在出差,順便讓老婆看了一下,才發現是有有效期的,趕緊打電話問能否延長,這下麻煩了。17號在成都的時候,本想托人帶回樂山給我老爸,可是我再仔細看了一下,發現必須在9.20之前回成都辦理好,算了一下時間,已然來不及。19號,到辦證中心希望能延長一下有效期,幸好,他們把有效期延長了一個月,趕快EMS給老爸,周三收到,周四到樂山辦理銷戶并寄回成都,周六在成都收到。9。30,以請了一天假,到辦證中心辦理戶口及身份證,按照要求需要提供:戶口銷戶證明,準遷證第二聯,身份證及照片兩張。本以為辦證中心旁邊的照相中心說不能照非身份證照,慘,又趕快去找了一家普通相館照相。交上各手續,終于拿到了成都市的戶口薄,正準備辦身份證,說是照相的聯網有問題,不能照,旁邊的一群人立刻炸開了鍋,大罵政府辦事有問題,甚至有人開始打電話投訴,沒過多久,也不知道如何又搞好了,反正又排起長隊開始照,我前面有20個人左右,差不多等了一個小時,造成老爸的生日午飯也沒來得及趕回去吃。照完后又到柜臺辦理身份證,交上各手續和20元錢,說兩個月之內可以拿到了。唉,真是好事多磨。不僅花了不少郵寄費,也花了不少時間和精力。政府為何就不改善一下局面,明知效率低,有問題,非得經過這些瑣碎的步驟才行。對于沒經歷過的人而言,真的是要耽擱不少時間。
    posted @ 2005-10-25 08:49 Java,研究之路 閱讀(497) | 評論 (0)編輯 收藏

    2005年9月15日

    An early look at JUnit 4

    Upcoming release promises evolution in testing

    難度級別: 中

    Elliotte Harold (elharo@metalab.unc.edu), Adjunct Professor, Polytechnic University

    2005-9-15 (譯)

    原文:http://www-128.ibm.com/developerworks/java/library/j-junit4.html

    JUnit 是JAVA語言事實上的標準測試庫。JUnit 4是三年以來最具里程碑意義的一次發布。它的新特性主要是針對JAVA5中的標記(annotation)來簡化測試,而不是利用子類、反射或命名機制。本文將講述如何使用JUnit 4,當前前提是你最好具有JUnit的使用經驗.

    JUnit, 由Kent Beck?和 Erich Gamma開發,幾乎是JAVA開發最重要的第三方工具。正如Martin Fowler 所說,“在軟件開發領域,從來就沒有如此少的代碼起到了如此重要的作用“。由于JUnit,JAVA代碼變得更健壯,更可靠,BUG也比以前更少。由于JUnit (由Smalltalk's的SUnit得來) 的出現,隨后產生了許多xUnit的測試工具,如nUnit (.NET), pyUnit (Python), CppUnit (C++), dUnit (Delphi) 和其它不同平臺及語言的測試相關的工具。

    雖然JUnit也只是一個工具,但其產生的思想和技術卻較其架構更意義重大。單元測試,測試先行的編程方式,測試驅動的開發方式,并非必須由JUNIT實現,也不一定要用SWing實現GUI界面。JUNIT最近的一次更新是在三年前,但它比其它大多數有BUG的框架都要健壯,更重要的是,JAVA一直在改進。現在JAVA支持泛型,枚舉,可變長度參數,以及標記語言(開創了開發可重用框架的新局面)。

    JUnit's的停滯不前使得那些想要變革的開發人員換其它測試工具.挑戰者有Bill Venners的Artima SuiteRunner和Cedric Beust的TestNG.這些工具庫雖然有值得推薦的功能,但沒有任何一款的地位能與JUNIT相比,沒有任何一款工具被其它業界產品如Ant, Maven, Eclipse廣泛支持.因此Beck 和Gamma雙開始利用JAVA5的新特性來開發新版的JUNIT,目的是利用JAVA5中的標記特性使得單元測試開發更容易。Beck說:“JUNIT4的主要目的是通過簡化JUNIT的使用鼓勵更多的開發人員寫更多的測試”。雖然會與以前的版本兼容,但JUNIT4與從JUNIT1.0就開始的版本相比會有一個非常大的變化.

    注意: 修改基本框架是一把雙刃劍,雖然JUNIT4的目的是清晰的,但細節仍有許多不同,因此本文只是一個簡單的介紹,并不是最終文檔.

    測試方法

    以前所有版本的JUNIT都使用命名機制和反射來定位測試,下面的代碼測試1+1= 2:

    import junit.framework.TestCase;
    
    public class AdditionTest extends TestCase {
    
      private int x = 1;
      private int y = 1;
      
      public void testAddition() {
        int z = x + y;
        assertEquals(2, z);
      }
    
    }

    而在JUNIT 4中,測試方法由@Test 標記說明,如下:

    import org.junit.Test;
    import junit.framework.TestCase;
    
    public class AdditionTest extends TestCase {
    
      private int x = 1;
      private int y = 1;
      
      @Test public void testAddition() {
        int z = x + y;
        assertEquals(2, z);
      }
    
    }

    使用標記的好處是你不用將所有測試方法命名為 testFoo(), testBar()等等以"test"開頭的方法,下面的方法也同樣可以工作:

    import org.junit.Test;
    import junit.framework.TestCase;
    
    public class AdditionTest extends TestCase {
    
      private int x = 1;
      private int y = 1;
      
      @Test public void additionTest() {
        int z = x + y;
        assertEquals(2, z);
      }
    
    }

    下面的代碼也同樣正確:

    import org.junit.Test;
    import junit.framework.TestCase;
    
    public class AdditionTest extends TestCase {
    
      private int x = 1;
      private int y = 1;
      
      @Test public void addition() {
        int z = x + y;
        assertEquals(2, z);
      }
    
    }

    這種命名機制最大的優點是更適合你的待測試類或方法名稱,例如,你可以使用ListTEst.contains()測試 List.contains();使用ListTest.addAll()測試 List.add()等等.

    TestCase還可以繼續使用,但你沒有必須再擴展為子類,只要你聲明了@Test,你可以將測試方法放在任何類中,當然如要訪問assert等方法,你必須要引用junit.Assert類,如下:

    import org.junit.Assert;
    
    public class AdditionTest {
    
      private int x = 1;
      private int y = 1;
      
      @Test public void addition() {
        int z = x + y;
        Assert.assertEquals(2, z);
      }
    
    }

    你也可以使用JDK5中的新特性(static import)使得跟以前版本一樣簡單:

    import static org.junit.Assert.assertEquals;
    
    public class AdditionTest {
    
      private int x = 1;
      private int y = 1;
      
      @Test public void addition() {
        int z = x + y;
        assertEquals(2, z);
      }
    
    }

    這種方法測試受保護的方法非常容易,因為你可以在測試類中繼承有受保護方法的類.



    Back to top


    SetUp 和TearDown

    JUnit 3 中test runners 會在每個測試之前自動調用 setUp()方法。此方法主要用于初始化變量,打開日志,重置環境變量等。下面是XOM's XSLTransformTest中的 setUp()方法:

    protected void setUp() {
            
        System.setErr(new PrintStream(new ByteArrayOutputStream()));
            
        inputDir = new File("data");
        inputDir = new File(inputDir, "xslt");
        inputDir = new File(inputDir, "input");
            
    }

    在JUnit 4中,你仍然可以在每個測試前初始化變量和配置環境,,然而,這些操作可以不用在Setup()中完成,你可以在初始化方法前面添加@Beforer 來表示,如下:

    @Before protected void initialize() {
            
        System.setErr(new PrintStream(new ByteArrayOutputStream()));
            
        inputDir = new File("data");
        inputDir = new File(inputDir, "xslt");
        inputDir = new File(inputDir, "input");
            
    }

    你也可以有多個方法標記有@Before,所有方法都會在每個測試之前執行:

    @Before protected void findTestDataDirectory() {
        inputDir = new File("data");
        inputDir = new File(inputDir, "xslt");
        inputDir = new File(inputDir, "input");
    }
        
     @Before protected void redirectStderr() {
        System.setErr(new PrintStream(new ByteArrayOutputStream()));
    }

    清除環境與JUNIT3 差不多,在JUNIT3中使用 tearDown()方法,下面的代碼是結束測試時回收內存:

    protected void tearDown() {
      doc = null;
      System.gc();   
    } 

    在JUnit 4中,你還可以使用@After標記來說明:

    @After protected void disposeDocument() {
      doc = null;
      System.gc();   
    } 

    @Before一樣,你也可以有多個標記有 @After的清除方法,每個都會在執行完每個測試后執行。

    最后,你不需要在父類中明確調用這些初始化或清除方法.test runner會自動調用這些標記的方法.子類中的@Before方法在父類的@Before方法之后執行(這與構造函數的執行順序一樣),而@After方法剛好相反,子類中的@After方法先執行.然而,多個@Before和@After方法的執行順序就是未知的.

    測試集范圍的初始化

    JUnit 4中引入了一項JUNIT3沒有的新特性,類級別的setUp()和tearDown(),即在一個類的所有測試前執行初始化,并在所有測試完成后執行清除。

    例如,一個測試類中的每個測試都要用到一個數據庫連接或網絡連接,或其它很耗資源初始化或釋放的資源,用不著在每個測試方法前后進行操作,而只需要在測試類開始前后執行即可。下面的示例是使用第三方的庫進行錯誤,在執行所有測試前將錯誤先重定向到非標準輸出,然后在所有測試結束后再輸出到需要的地方,這樣就不會影響到測試過程中產生的其它信息。

    // This class tests a lot of error conditions, which
    // Xalan annoyingly logs to System.err. This hides System.err 
    // before each test and restores it after each test.
    private PrintStream systemErr;
        
    @BeforeClass protected void redirectStderr() {
        systemErr = System.err; // Hold on to the original value
        System.setErr(new PrintStream(new ByteArrayOutputStream()));
    }
        
    @AfterClass protected void tearDown() {
        // restore the original value
        System.setErr(systemErr);
    }

    上面的操作沒有必須在每個測試前后執行。然而要注意的是,這種方法可能影響測試間的結果,如果一個測試改變了初始化的對象,而這個對象可能是其它測試的輸入,那么測試的結果可能不正確,這種方法將依賴測試的順序并可能引入BUG。當優化測試性能,并且當你改進了配置和基準測試后而仍然很慢時,如數據庫連接或網絡問題,你才需要考慮使用這種方法。只有這樣,你才能每天執行多次測試。



    Back to top


    異常測試

    異常測試是JUNIT4中的最大的改進,以前異常測試是通過try catch實現,當拋出異常時,在try的最后添加一條fail()語句實現.如下:

    public void testDivisionByZero() {
        
        try {
            int n = 2 / 0;
            fail("Divided by zero!");
        }
        catch (ArithmeticException success) {
            assertNotNull(success.getMessage());
        }
        
    }

    這種方法不僅難看,而且造成無論成功或失敗,代碼覆蓋工具都不能執行某些代碼.而在JUnit 4中,你可以在要拋出異常的代碼中添加標記來聲明一個異常是期望的:

    @Test(expected=ArithmeticException.class) public void divideByZero() {
        int n = 2 / 0;
    }

    如果沒有異常拋出,上面的測試則會失敗,如果你想知道異常的詳細信息或其它情況,你還是要使用try catch才行

    Back to top


    需要忽略的測試

    也許你有些測試需要很長時間才能執行完成,并非是這個測試應該跑得快,而是它做的很復雜和很慢的工作造成的.如訪問遠程網絡錯誤,需要很久才能有反饋.如果你不想讓這種測試破壞你整個測試過程,你可能想跳過這個測試.當然也有可能某個測試超出控制范圍而失敗.如W3C XInclude測試集中自動識別一些JAVA不支持的Unicode代碼.為了防止這些測試總是通不過,可以使用標記 @Ignore跳過這些測,如下:

    // Java doesn't yet support the UTF-32BE and UTF32LE encodings
        @Ignore public void testUTF32BE() 
          throws ParsingException, IOException, XIncludeException {
          
            File input = new File(
              "data/xinclude/input/UTF32BE.xml"
            );
            Document doc = builder.build(input);
            Document result = XIncluder.resolve(doc);
            Document expectedResult = builder.build(
              new File(outputDir, "UTF32BE.xml")
            );
            assertEquals(expectedResult, result);
                    
        }

    test runner不會執行這些測試,但會說明這些測試被跳過了。在命令行測試界面中,字母“I”會表示測試跳過,或“E”表示測試失敗,而不是用點”."表示成功.

    $ java -classpath .:junit.jar org.junit.runner.JUnitCore nu.xom.tests.XIncludeTest
    JUnit version 4.0rc1
    .....I..
    Time: 1.149
    
    OK (7 tests)

    要注意的是,假設這些測試由于某種理由放在最開始,如果你以后一直忽略這些測試,那些需要被測試的代碼可能有問題而不會被檢測到。因此忽略測試只是一個臨時解決方法,并不是一個解決任何問題的真正辦法。



    Back to top


    時間測試

    性能測試是單元測試中最頭疼的問題,JUnit 4也未完全解決此問題, 你可以在JUNIT4的測試方法中添加一個時間參數。如果測試時間超過參數,則測試失敗。如下,如果測試時間超過0.5秒,則此測試失敗:

    
    @Test(timeout=500) public void retrieveAllElementsInDocument() {
        doc.query("http://*");
    } 

    除基準性能測試外,時間測試在網絡測試方面也很有用.如果一個遠端的主機或數據當掉或太慢,你可以跳過此測試而不用阻塞在這里,好的測試集可以在作了一些改動后很快的一遍一遍的執行,可能一天數十次.設置一個超時讓測試更快的執行,下面的示例中如果分析http://www.ibiblio.org/xml 的時間超過2秒,則測試失?。?/p>
    
    @Test(timeout=2000) 
      public void remoteBaseRelativeResolutionWithDirectory()
       throws IOException, ParsingException {
          builder.build("http://www.ibiblio.org/xml");
      } 



    Back to top


    新的斷言

    JUnit 4 增加了兩上斷文方法用于比較數組:

    
    public static void assertEquals(Object[] expected, Object[] actual)
    public static void assertEquals(String message, Object[] expected, 
    Object[] actual)
    

    這兩個方法采用最直接方法比較,如果數組長度相同,且每個對應的元素相同,則比較成功,否則不成功.參數為空的情況也作了考慮.

    Back to top


    需要補充的地方

    JUnit 4是一個非?;镜目蚣?,還不是以前版本的升級。JUNIT3的開發人員會發現有些功能沒有。

    • 最大的特點就是沒有GUI測試界面,當測試正確時是綠色條,而出錯時紅色的,你也可以在Eclipse中集成JUNIT使用,但JUNIT4既沒有AWT也沒有SWING的GUI測試界面;
    • 另一個讓人吃驚的是失?。ㄆ谕e誤)和錯誤(未預計的異常錯誤)沒有明顯區別,在JUNIT3中開發人員可以區分這兩種情況,而在JUNIT4中不行;
    • 最后一個特點是JUNIT中沒有用于建立一堆測試類的suite()方法,取而代之的是,采用變長參數傳遞未知數量的測試給test runner。

    沒有GUI測試界面的確不方便,但其它改變簡化了JUNIT的使用,從當前JUNIT的操作手冊和FAQ的數量就知道,而JUNIT4的文檔將不會需要這么多。



    Back to top


    編譯和運行JUnit 4

    現在JUnit 4還沒有發布編譯版本,如果想體驗版本的樂趣,則需要從CVS中獲取源代碼。分支標簽是"Version4" (see Resources ).要注意的是大部分文檔是根據JUNIT3編寫的,還未同步更新。需要Java 5才能編譯JUnit 4,因為大量使用了標記,泛型其其它JDK5中的新特性。

    執行測試的命令行方式與JUNIT3有點區別,你現在要使用 org.junit.runner.JUnitCore 類進行測試,如下:

    
    $ java -classpath .:junit.jar org.junit.runner.JUnitCore 
      TestA TestB TestC...
    JUnit version 4.0rc1
    
    Time: 0.003
    
    OK (0 tests)

    兼容性

    Beck 和Gamma在努力保持后向和前向兼容性。JUnit 4可以直接運行根據JUNIT3編寫的測試類,而不用任何修改,直接將各測試類的全名傳遞給test runner即可.test runner會根據不同的測試類調用不同的測試框架版本.

    后向兼容性有點麻煩,即在JUNIT3中執行根據JUNIT4寫的測試類,之所以要這樣是因為在一個集成環境如Ecplise中,不需要升級到JUNIT4也可以測試JUNIT4的測試類,從而避免工具IDE的升級。為了讓JUNIT4的測試類在JUNI3中能執行,你需要一個適配類JUnit4TestAdapter封裝JUNIT3的測試類,如下代碼:

    public static junit.framework.Test suite() {
      return new JUnit4TestAdapter(AssertionTest.class);    
    }

    而JAVA方面,JUNIT4一點兼容性都沒有,因為完全依賴于JDK5的新特性,因此不可能在JAVA1.4上面執行JUNIT4。



    Back to top


    還有...

    JUnit 4遠未結束,還有許多需要補充,如文檔,現在不推薦將以前的測試類升級到JUNIT4。當然JUNIT4的開發速度很快,其計劃也很快會實現,JAVA1.4的開發人員仍然可以使用JUNIT3.8,而使用JAVA5的人員可以考慮是否采用JUNIT4了,因為在特性上更適合。



    Back to top


    資源


    下載測試版本
    • JUnit 4: Download the newest version of JUnit the SourceForge CVS repository; be sure to use the branch tag "Version4."

    posted @ 2005-09-15 18:02 Java,研究之路 閱讀(2067) | 評論 (4)編輯 收藏

    2005年4月19日

    1. 首先要安裝jsse,需要jcert.jar,jnet.jar,jsse.jar三個jar;
    2. 然后添加keystore:
    %JAVA_HOME%\bin\keytool -delete -alias tomcat -keypass changeit

    %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keypass changeit -keyalg RSA

    %JAVA_HOME%\bin\keytool -export -alias tomcat -keypass changeit  -file
    %FILE_NAME%

    %JAVA_HOME%\bin\keytool -import -file server.crt -keypass changeit
    -keystore %JAVA_HOME%/jre/lib/security/cacerts

    %JAVA_HOME%\bin\keytool -import -file server.crt -keystore
    %JAVA_HOME%\jre\lib\security\cacert

    3. 然后在%catalina_home%\conf\server.xml.中取消SSL的注釋.

    4. visit http://localhost:8443/ test it.
    參考 http://jakarta.apache.org/tomcat/tomcat-4.0-doc/ssl-howto.html.
    posted @ 2005-04-19 14:51 Java,研究之路 閱讀(750) | 評論 (0)編輯 收藏
    僅列出標題  
     
    主站蜘蛛池模板: 亚洲国产成人手机在线电影bd| 最近最好的中文字幕2019免费| 亚洲成a∧人片在线观看无码| 日本特黄特黄刺激大片免费| 亚洲老熟女五十路老熟女bbw| 精品免费国产一区二区三区| 欧美色欧美亚洲另类二区| 国产日产成人免费视频在线观看| 亚洲熟妇无码八V在线播放| 日韩精品无码人妻免费视频| 18禁亚洲深夜福利人口| 亚洲高清成人一区二区三区| 伊人久久国产免费观看视频| 亚洲精品乱码久久久久久中文字幕| 中文字幕免费不卡二区| 亚洲高清资源在线观看| 天天摸天天操免费播放小视频| 亚洲欧洲国产综合AV无码久久 | 亚洲愉拍99热成人精品热久久| 国产亚洲精品免费视频播放| 99ri精品国产亚洲| 日韩精品无码区免费专区 | 色爽黄1000部免费软件下载| 国产亚洲精品看片在线观看| 全免费a级毛片免费看| 亚洲娇小性色xxxx| 亚洲视频在线免费| 免费人成在线观看网站品爱网| 亚洲中文字幕无码av永久| 免费乱码中文字幕网站| 日韩精品免费在线视频| 亚洲国产成人精品激情| 亚洲男女内射在线播放| 在线免费观看国产| 免费观看又污又黄在线观看| 亚洲国产女人aaa毛片在线| 成人黄色免费网址| 成在线人视频免费视频| 亚洲熟妇丰满xxxxx| 国产AV无码专区亚洲AV手机麻豆| 亚洲成人免费网址|