• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    對 Java 和 EJB 應用程序進行單元測試

    發布: 2009-4-09 11:25 | 作者: IBM | 來源: 測試時代采編 | 查看: 25次 | 進入軟件測試論壇討論

    領測軟件測試網

      此外, JUnit 測試用例可以從 Rational Application Developer 的IDE 運行或者在 Ant 構成腳本中自動運行。

            JUnit 還通過利用 junit.framework.TestSuite 類提供了一種將測試歸組為測試套件的方法。一個測試套件是由您能夠在相同時期運行的相關測試組成的。下面有兩種 JUnit 運行測試比較便利的方法:

    • 對于第一種方法,您可以通過使用這個命令將測試用例傳遞到 TestSuite 構造器:
      TestSuite suite= new TestSuite(testAddJava.class) 在這種情況下,TestRunner 將所有帶測試前綴的測試程序挑選出來,然后自動運行每一個測試用例。
    • 另一個可選的方法是,通過使用 TestSuite.addTest 方法添加每個測試用例:
      TestSuite suite = new TestSuite(); suite.addTest(new AddJavaTest("testSimpleAddition"));

            JUnitEE 測試框架

            JUnit 提供了一個對客戶端 Java 應用軟件進行單元測試的有效且簡便的方法,但是它仍有一些局限性;因此,在每一個應用軟件服務器的容器中進行測試變成了一個冗長且乏味的過程。IBM Rational Application Developer 平臺提供的 Web-based Universal Test Client (UTC) 特性為 Enterprise JavaBeans (EJBs) 提供了一個無縫的完整的單元測試機制。然而,Rational Application Developer UTC 是一個交互式的單元測試機制,因此當進行自動單元測試時它顯得有些不足。

            JUnitEE 測試框架就是解決這些局限性的,同時還處理這個冗長而乏味的過程。這個框架延伸了標準的 JUnit,從而使它能夠在應用服務器容器中執行單元測試。它在單元測試軟件的 J2EE Web 模塊中配置,利用 TestRunner 輸出 HTML 或者 XML 測試結果。它還包含一個登陸到 JUnit 測試用例登陸口的 TestServlet。因此,根據 JUnitEE.org 的說法, 將您的測試工具構建為一個標準的 J2EE Web 有以下幾點好處:

    • 測試在 J2EE Web 模塊中已經打包(以 WAR 文件的形式),這樣便于部署和執行。
    • 測試用例看起來就像產品代碼,對于您的 EJB, 通過 facade 模式,它們可以使用相同的 Java bean。
    • 通過使用一個 Ant 腳本可以使測試自動化。

            利用 JUnit 和 JUnitEE 進行單元測試的例子

            這個部分向您展現了如何利用 JUnit 和 JUnitEE 測試框架的優勢對一個在 Rational Application Developer IDE 中開發的簡單的無狀態 session EJB 進行單元測試。這個 EJB 僅僅添加了兩個數字就返回這些數字的總和。盡管這只是一個微不足道的功能,但是它包含了闡明這個例子的所有必要條件。這個系列的第 3 部分提供了 EJB 如何在 Rational Application Developer 軟件內部構建和單元測試的逐步的示范。

            簡單地說,這個例子是一個無狀態 session bean 的單元測試。然而,您也可以利用 JUnit 和 JUnitEE 測試框架對其它類型的 EJB 進行單元測試。這里這個簡單的方法包含以下幾個步驟:

    1. 創建一個簡單的 Java bean 計數器。
    2. 為基本的計數器創建一個 EJB。
    3. 創建一個 EJB 客戶。
    4. 開發 JUnit 測試用例對 Java 應用軟件和這個計數器 EJB 進行測試。
    5. 創建一個 JUnitEE 測試模塊,并對它進行配置。
    6. 在 WebSphere Application Server 環境中部署并執行測試用例。

            您可以下載這篇文章中所有例子的源代碼(請看參考資源)。

            步驟 1. 創建一個簡單的 Java bean 計數器

            第一個例子是一個簡單的 Java 應用軟件,它添加了兩個數字并返回了它們的和。代碼列表 2顯示了這個類執行。


    列表 2. 基本的 Calculator Java Bean 的執行
    package calc;
    public class BasicCalculator {
    public double addTwoNumbers(double first, double second)
    {
    return first + second;
    }
    }

            步驟2. 為基本的計數器創建一個 EJB

            利用 Rational Application 開發者產生一個無狀態 bean 稱作 BasicCalculator。

            代碼列表 3 包含一個 EJB 即將呈現的樣例。

            BasicCalculatorBean EJB 類包含一個業務方法,addTwoNumbers,服務于計數器功能的。 這個業務方法添加在一個遠程的接口中,使客戶能夠訪問這個方法。EJB 可以是遠程的、分布的對象。Rational Application Developer IDE 產生的客戶端工件能夠很容易的對遠程目標進行訪問。測試應用軟件可能在一個分離的 Enterprise Archive (EAR) 中,因此我們利用遠程而不是本地接口來訪問 EJB。(本系列的第 3 部分顯示了如何利用 IDE 的智能指南創建客戶端工件)。


    列表 3. Basic Calculator EJB 的實現
    package ejbs;
    /**
    * Bean implementation class for Enterprise Bean: BasicCalculator
    */
    public class BasicCalculatorBean implements javax.ejb.SessionBean {
    private javax.ejb.SessionContext mySessionCtx;
    public javax.ejb.SessionContext getSessionContext() {
    return mySessionCtx;
    }
    public void setSessionContext(javax.ejb.SessionContext ctx) {
    mySessionCtx = ctx;
    }
    public void ejbCreate() throws javax.ejb.CreateException {
    }
    public void ejbActivate() {
    }
    public void ejbPassivate() {
    } public void ejbRemove() {
    } public double addTwoNumbers(double first, double second) {
    return first + second; }
    }

            步驟 3. 產生一個 EJB 客戶端

            在這個步驟中,按照 Rational Application Developer 的智能指導產生客戶端工件。這些步驟在這個文章系列的第 3 部分將會有示范。

            步驟 4. 開發 JUnit 測試用例來測試 Java 和計數器 EJB

            當您實現完 Java Bean Calculator、 Basic Calculator EJB 以及客戶 EJB 之后,您就可以編寫 JUnit 測試用例了。

            利用 JUnit 對 Java 應用軟件進行單元測試
    這里,您可以利用列表 1中概述的 JUnit 測試結構的優勢來編寫三種對 BasicCalulator Java Bean 和 EJB 進行單元測試的方法。

            列表 4 中的單元測試列舉了各種斷言方法來執行正面與反面的單元測試。它有以下幾種測試方法

    • testSimpleAddition()方法包含兩個論斷。第一個宣稱這個計數器實例對象不是空,就像它實際存在一樣。第二個驗證通過與期望值4 相比較,這個計數器準確地將2加上2。
    • testSimpleAdditionNotSame()方法展示了負面的測試,確保兩個截然不同的值是不一樣的。也就是說,這兩個數字(2+2)的和不是等于5的。
    • testDesignedToFail()方法論證了 JUnitEE 框架中一個失敗的測試用例看起來是什么樣的。在這個測試用例中,兩個自變量,1和1是通過 BasicCalculator 來相加的,然后再將所得的值與3相比較。這個測試失敗了。結果向您展示了在哪里以及為什么失敗了。

    列表 4. Calc Java Bean 的 JUnit Test
    package calc.test;
    import calc.BasicCalculator;
    import junit.framework.TestCase;
    public class BasicCalculatorTest extends TestCase {
    BasicCalculator aBasicCalculator = null;
    /*
    * Setup before each test case
    */
    protected void setUp() throws Exception {
    super.setUp();
    aBasicCalculator = new BasicCalculator();
    }
    public void testSimpleAdditionNotSame() throws Exception {
    double result = aBasicCalculator.addTwoNumbers(2, 2);
    assertNotSame("2+2 does not = 5", new Double(result), new Double(5));
    }
    public void testDesignedToFail() throws Exception {
    double result = aBasicCalculator.addTwoNumbers(1, 1);
    assertTrue("1 + 1 = 3", result == 3);
    }
    public void testSimpleAddition() throws Exception {
    assertTrue("Calculator instance is not null", aBasicCalculator != null);
    double result = aBasicCalculator.addTwoNumbers(2, 2);
    assertTrue("2+2=4", result == 4); }
    }

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    22/2<12

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>