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

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

  • <strong id="5koa6"></strong>
  • (一)跨越邊界: 在集成框架中進行測試-在 Ruby on Rails 中進行單元測試

    發表于:2009-04-02來源:作者:點擊數: 標簽:框架單元rubyRubyRAILS
    Java 社區在推進自動 單元測試 方面已經做了一項激動人心的工作。越來越多的開放源碼框架支持在構建項目的同時構建自動測試套件。Spring framework、JUnit、TestNG 和其他幾個框架的一些或全部靈感都來自 自動測試 的思想。盡管如此,一些非 Java 語言和框架
    Java ™ 社區在推進自動單元測試方面已經做了一項激動人心的工作。越來越多的開放源碼框架支持在構建項目的同時構建自動測試套件。Spring framework、JUnit、TestNG 和其他幾個框架的一些或全部靈感都來自自動測試的思想。盡管如此,一些非 Java 語言和框架具有更多的測試動機、更合適的測試工具和更統一的測試視角。通過觀察其他框架的測試方式,可以改進 Java 語言中的測試方式,甚至使用更合適的語言來測試Java 代碼。這篇文章是關于在 Ruby on Rails 上進行測試的兩篇文章中的第一篇,將介紹 Rails 單元測試的方式。


    捕獲 bug

      我還記得當我第一次得到自動測試的 bug 時的情況。在一次大會上,當我做完叫做 Bitter Java 的演講之后,Mike Clark(Java 社區的自動測試大師,性能調整工具 JUnitPerf 的作者(請參閱 參考資料),現在是 Ruby on Rails 專家)走近我。Mike 告訴我有一種方法可以通過自動測試改進我的演講。在那次大會的剩余時間里,我跟著他四處走,看到了我能看到的盡可能多的他的測試會議。我開始使用他推薦的技術,并對把紅條(代表測試失?。┳兂删G條(代表測試通過)上了癮。自動測試改變了我思考軟件開發的方式。

      Java 社區絕對有自動測試的 bug。坦白地說,我們別無選擇。競爭壓力迫使許多公司編寫越來越多的代碼,而測試人員越來越少,同時每個開發人員的又必須有更高的生產率。如果不進行自動測試,得到測試的內容就會更少,面對現代應用程序不斷增長的復雜性,較少的測試不是一個可行的選擇方案。

      在過去十年中,我們已經看到了對測試工具和技術的研究。JUnit 和 TestNG 都是支持自動單元測試的優秀工具,而且由日常的開發人員所驅動。Selenium 是改進集成和功能測試的工具。一套稱作敏捷技術 的新開發過程告訴人們要更加重視自動測試,不要太多地依賴正式的設計工具,將它們作為提高質量的惟一工具。Java 社區已經走了很長的路。其他編程社區也有 bug 工具, 其中一些社區使用的自動測試要比 Java 開發人員還有多,他們使用自動測試經驗有完全不同的原因:

      Smalltalk 程序員使用自動測試已經幾乎有 30 年的時間了,所以通過動態類型化語言使用的一些技術更加先進。


      集成框架的開發人員的優勢是了解框架元素的結構和組合。有些框架,例如 Ruby on Rails,能夠生成測試用例,而且在默認情況下提供測試特性。


      具有高級元編程(metaprogramming)能力的語言,例如 Ruby and Lisp,允許使用其他語言不支持的一些測試技巧,例如更容易訪問 mock 對象。
    在這一篇和下一篇文章中,將全面理解在 Ruby on Rails 集成開發框架中的測試方式。第 1 部分側重于測試模型對象,并提供一些從 Rails 獲得啟發的策略,可以用這些策略使 Java 單元測試更有效。第 2 部分把更多時間花在功能測試和集成測試上。作為 Java 程序員,您對一些概念可能比較熟悉,特別是在測試的時候,而其他一些概念可以拓展您的理解。

    補漏

      在這個系列的 前一期 中,了解了動態類型化會帶來某些 bug 種類,靜態類型化語言將在編譯時捕捉到這些 bug。清單 1 的 Ruby 代碼片段包含四個不同的 bug,這四個 bug 在運行時之前都不會顯露出來:


    清單 1. 帶 bug 的 Ruby 代碼
     
    position = "2"               #string, where a number was intended
    position = positoin + 4      #position is misspelled, evaluates to 0
    puts "The position is:" +
          position.to_string     #The method should be to_s 
     


      如果編譯器能夠捕捉 bug,那么這類 bug 解決起來是小菜一碟,但是如果依賴解釋器,那么管理這些 bug 就困難得多。為了處理這些微妙的錯誤,動態語言的用戶長期以來一直依賴于自動測試。在進行測試的時候,比起其他語言,動態語言及其集成環境在一般意義和特殊意義上都具有顯著的優勢:

      語言更簡潔。測試基本上是腳本編程,許多最好的腳本語言都是動態類型化的。

     
      集成環境支持的假設可以讓集成測試更容易,也可能更強大。在 Rails 環境中將看到一些示例。


      動態語言允許使用更松散的耦合,使一些測試格式更容易實現。
      在了解動態語言開發人員為什么這么熱衷于測試之后,現在是構建一個需要一些真正測試的實際應用程序的時候了。

    原文轉自: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>