超越單元測試的擴展
在這由兩部分組成的迷你系列的 第 1 部分 中,了解了如何用動態語言促進單元測試。本文將展示集成環境在功能測試和集成測試中的優勢。單元測試包括對小的代碼片斷(例如方法)的測試,而且經常要把它們與周圍的元素隔離開。功能測試和集成測試所測試的應用程序部分越來越多。功能測試用于測試單一特性(通常涉及一個接口)、執行任務的業務代碼,以及與中間件服務交互的代碼(例如數據庫)。集成測試用于測試應用程序的多個不同特性。(功能測試在不太嚴謹的情況下通常也被稱為集成測試。)
Java 開發人員在解決單元測試問題上已經獲得了令人注目的成果,但在集成測試上則沒有帶來太多令人興奮的消息。多數 Java 測試框架(如 JUnit 或 TestNG)主要側重于單元測試。Java 編程中缺乏集成測試框架的一個原因是缺乏集中的架構或開發哲學。在后面的小節中,我將繼續使用 Ruby on Rails 示例,這次的重點放在功能測試和新的 Rails 集成測試框架上。您將看到,在使用集成測試框架時,進行測試要容易得多。
運行測試
如果還沒有閱讀 第 1 部分,那么請先閱讀它。然后,如果想跟隨這篇文章一起編寫代碼,那么請確保您已經獲得一個可工作的 Rails 應用程序。在第 1 部分中,實現了一個簡單的單元測試和幾個 fixture。如果您跟隨第 1 部分一起編寫了代碼,但是記不清是否使應用程序處于工作狀態,那么您可以利用測試用例,先切換到項目目錄,然后運行 rake 即可。清單 1 顯示了我的結果:
清單 1. 用 rake 運行所有測試
> bruce-tates-computer:~/rails/trails batate$ rake
(in /Users/batate/rails/trails)
/usr/local/ror/bin/ruby -Ilib:test
"/usr/local/ror/lib/ruby/gems/1.8/gems/rake-0.7.0/lib/rake/rake_test_loader.rb"
"test/functional/trails_controller_test.rb"
Loaded suite /usr/local/ror/lib/ruby/gems/1.8/gems/rake-0.7.0/lib/rake/rake_test_loader
Started
EEEEEEEEEEEEEEEE
Finished in 0.070797 seconds.
1) Error:
test_create(TrailsControllerTest):
Errno::ENOENT: No such file or directory - /tmp/mysql.sock
/usr/local/ror/lib/ruby/gems/1.8/gems/activerecord-1.14.0/
lib/active_record/vendor/mysql.rb:104:in 'initialize'
/usr/local/ror/lib/ruby/gems/1.8/gems/activerecord-1.14.0/
lib/active_record/vendor/mysql.rb:104:in 'real_connect'
/usr/local/ror/lib/ruby/gems/1.8/gems/activerecord-1.14.0/
lib/ active_record/connection_adapters/mysql_adapter.rb:331:in 'connect'
.
文章來源于領測軟件測試網 http://www.kjueaiud.com/