2012-10-30 89 views
0

有沒有辦法從對象內調用斷言?我正在編寫Selenium測試,並使用測試單元進行斷言和簡單報告。我在頂級測試(擴展了Test :: Unit :: TestCase的類)和selenium webdriver之間有一個抽象層。我有我的抽象層負責頁面上的所有項目,並且如果抽象層發現除期望之外的東西,我需要一種方法讓頂級測試停止。如果我可以從這個抽象層內部調用Test :: Unit斷言,那將是理想的。如果有關於如何更好地完成此任務的任何建議,我願意接受建議。 謝謝, Zach在抽象層中使用Test :: Unit

回答

0

您可以通過包含Test::Unit::Assertions模塊從抽象層內調用Test :: Unit斷言。

所以,你的代碼可能看起來是這樣的:

require 'test/unit' 

class MyPageObject 
    include Test::Unit::Assertions 

    def initialize() 
     assert(false, 'abstraction layer found something wrong') 
    end 
end 

class MyTest < Test::Unit::TestCase 
    def test_1() 
     page = MyPageObject.new 
     assert(false, 'test found something wrong') 
    end 
end 

include Test::Unit::Assertions線將使您MyPageObject類(我相信這是你所呼叫的抽象層)進入測試::單位斷言。

在上面的示例中,MyPageObject類中的斷言將失敗,導致test_1失敗。

我使用這個解決方案時遇到的唯一問題是報告完成的斷言數量(在Test :: Unit報告結尾處看到)。該數字不包括抽象層中的斷言。但是,我沒有看到足夠的價值,因此值得調查。

+0

謝謝賈斯汀,我觀察到同樣缺乏斷言數量的報告。儘管如此,這對我的目的是正確的。您的解決方案非常好 – Zach

相關問題