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

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

  • <strong id="5koa6"></strong>
  • 軟件測試之有關Junit的多線程測試

    發表于:2009-04-08來源:作者:點擊數: 標簽:軟件測試junitJunitJUnitJUNIT
    Junit 和許多 開源 軟件項目集成在一起,但是Junit執行多線程的 單元測試 有一些問題。這篇文章介紹Junit的一個擴展類庫―――GroboUtils,這個類庫被設計為來解決這些問題,并且使在Junit中進行單元測試成為可能。對Junit和線程有一個基本的理解是有好處的
    Junit和許多開源軟件項目集成在一起,但是Junit執行多線程的單元測試有一些問題。這篇文章介紹Junit的一個擴展類庫―――GroboUtils,這個類庫被設計為來解決這些問題,并且使在Junit中進行單元測試成為可能。對Junit和線程有一個基本的理解是有好處的,但對于本篇文章的讀者來說不是必需的。

    介紹
            如果你已經在一個開源的Java項目上工作,或者讀了許多有關“極限編程”和其它“快速開發模式”的書籍,那么,你很有可能已經聽說過有關Junit的事情。它是由Erich Gamma和Kent Beck編寫的,Junit是一個Java的自動測試的框架,它允許你為你的軟件定義的“單元測試”―――不管是測試程序還是功能代碼,通常都是基于方法調用方法的。

            Junit能在很多方面幫助你的開發團隊―――在一些文章中已經包含了很多這方面的介紹。但從一個開者到另一個開發者,Junit實際上只專箸于兩件事:

            1、它強制你使用自己的代碼。你的測試代碼只是作為你的產品代碼的客戶端,從客戶端的描述所獲得的對你的軟件的了解,能夠幫助你標識出在API中的錯誤以及怎樣改進代碼,使其最終達到可以使用的目的。

            2、它會給你對軟件中改變帶來信心,如果你的測試用例被中斷,你就是立刻知道錯誤。在一天工作結束的時候,如果測試提示是綠色的,則代碼是正確,你可以自信的檢查它。

            但是Junit不是解決所有軟件測試中問題,第三方的擴展類庫,例如HttpUnit,JwebUnit,XMLUnit等,已經認識到這些框架中不足,并且通過添加功能彌補不足,這些不足之一就是Junit不包含多線程的單元測試。

            在這篇文章中,我們會看到一個很少有人知道的解決這個問題的擴展類庫。我們通過建立Junit框架開始,并且運行一個例子來展示Junit在線程沒試中的不足。在我們認識了Junit在線程測試方面的不足之后,我們通過一個使用GroboUtils框架的例子來討論GroboUnitls

    線程回顧

            對于那些不熟悉線程的人來說,在這一點上是非常不安的(一點都不夸大),離開你的系統,我們將對線做一個簡單的介紹。線程允許你的軟件有多個任務,也就是說可以同時可做兩件事情。
            在Khalid Mugal和Rolf Rasmussen的書(A Programmer's Guide to Java Certification)中,對線程做了下面這樣的簡短描述:
            一個線程是一個程序中的可執行單元,它是被獨立執行的。在運行時,在程序中的線程有一個公共的內存空間,因此,能夠共享數據和代碼;也就是說,它們是輕量級的。它也共享正在運行程序的進程。
            Java 線程使運行時環境異步,它允許不同的任務同時被執行。(p.272)


            在web應用程序中,許多用戶可能同時發請求給你的軟件。當你寫單元測試對你的代碼進行壓力測試時,你需要模擬許多并發事件,如果你在開發健壯的中間件,這樣做是尤其重要的。對于這些組件,使用線程測試是一個好的想法。

            不幸的是,Junit在這方面是不足的。

    有關Junit和多線程測試的問題

           

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品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>