您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 >
跨越邊界: 在集成框架中進行測試--在 Ruby on Rails 中進行單元測試
作者:網(wǎng)絡轉(zhuǎn)載 發(fā)布時間:[ 2013/2/27 15:39:39 ] 推薦標簽:

再次注意,Rails 已經(jīng)為您創(chuàng)建了測試用例?蚣懿粌H為這個簡單的小程序生成了視圖和控制器,而且還生成了有助于測試用戶界面的功能性測試。

對 Rails 應用程序進行單元測試

現(xiàn)在是運行一些測試的時候了。請看第一個測試,它已經(jīng)在 test/unit/trail_test.rb 中寫好了:

清單 8. 第一個測試


require File.dirname(__FILE__) + '/../test_helper'

class TrailTest < Test::Unit::TestCase
   fixtures :trails

   # Replace this with your real tests.
   def test_truth
      assert true
   end
end


確實,這個測試用例算不了什么,但您可以從中看出如何構(gòu)架測試代碼,而且自己的測試用例的模板也已經(jīng)位。請運行測試,如清單 9 所示(包括結(jié)果):

清單 9. 運行第一個測試


> ruby test/unit/trail_test.rb
    Loaded suite test/unit/trail_test
    Started
    EE
    Finished in 0.027314 seconds.

      1) Error:
    test_truth(TrailTest):
    ActiveRecord::StatementInvalid: Mysql::Error: #42S02Table
      'trails_test.trails' doesn't exist: DELETE FROM trails

...results deleted...


測試用例失敗,但是請看輸出。第一行執(zhí)行測試。第三行 EE 顯示測試的結(jié)果。如果測試用例通過,會得到 “.” 字符。如果測試用例產(chǎn)生錯誤,會看到 E。如果某個斷言不是 true,那么將看到 F。接下來,可以看到所請求的全部測試都將完成,以及完成這些測試需要的時間。后,將看到每個失敗的詳細原因。在這個示例中沒有表,這是有一定原因的,因為在測試數(shù)據(jù)庫中還沒有創(chuàng)建任何表。通過將開發(fā)方案復制到測試環(huán)境,再重新運行測試,可以修復錯誤,如清單 10 所示:

清單 10. 復制方案,重新運行測試


> rake clone_schema_to_test          (in /Users/batate/rails/trails)
> ruby test/unit/trail_test.rb
    Loaded suite test/unit/trail_test
    Started
    .
    Finished in 0.038578 seconds.

    1 tests, 1 assertions, 0 failures, 0 errors


這樣更好。但是測試還是太簡單,所以是構(gòu)建一個真正的測試用例的時候了。請?zhí)砑酉旅孢@個新測試用例 test_truth,如清單 11 所示:

清單 11. 添加測試用例


    def test_truth
      assert true
    end

    def test_new
      trails = Trail.find_all
      Trail.new do |trail|
        trail.name = "Barton Creek"
        trail.description = "A little water in the Spring. You'll get wet."
        trail.difficulty = "medium"
        trail.save
      end
      bc = Trail.find_by_name("Barton Creek")
      assert_equal "medium", bc.difficulty
      assert_equal trails.size + 1, Trail.find_all.size

    end


這個代碼驚人的緊湊。只需要鍵入上述代碼以及兩個斷言,可以操縱持久模型。這種經(jīng)濟的投入正是腳本語言在其他環(huán)境中如此流行的原因。測試也是需要經(jīng)濟投入的地方。

現(xiàn)在可以運行測試用例,您將看到兩個新斷言顯示在測試報告中。使用 Ruby 時,只需保存并編譯測試即可。清單 12 顯示了測試運行的結(jié)果:

清單 12. 測試結(jié)果


> ruby test/unit/trail_test.rb
    Loaded suite test/unit/trail_test
    Started
    .
    Finished in 0.038578 seconds.

    1 tests, 1 assertions, 0 failures, 0 errors
    bruce-tates-computer:~/rails/trails batate$ ruby test/unit/trail_test.rb
    Loaded suite test/unit/trail_test
    Started
    ..
    Finished in 0.182043 seconds.

    2 tests, 3 assertions, 0 failures, 0 errors


Fixture 和回滾
Java mock 對象

上一頁1234下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd