2013-10-08 63 views
0

我會幫忙感謝在下面的代碼排序錯誤:爲什麼在下面的代碼中有錯誤?

require 'rubygems' 
require 'watir' 
require 'watir-webdriver' 
require 'test/unit' 

class TestGoogle < Test::Unit::TestCase  
    def setup 
    @browser = Watir::Browser.new :firefox 
    end 

    def testSignInLink 
    @browser.goto "http://google.com/" 
    po = PageObjects.new(@browser) 
    po.clickLinkSignIn 
    end 
end 

class PageObjects 
    def initialize(browser) 
    @browser = browser 
    end 

    def clickLinkSignIn() 
    @browser.link(:id, "gb_70").click 
    end 
end 

tg = TestGoogle.new 
tg.setup 
tg.testSignInLink 

的錯誤是:

Uncaught exception: wrong number of arguments (0 for 1) 
C:/Ruby193/lib/ruby/1.9.1/minitest/unit.rb:971:in `initialize' 
C:/RubymineProjects/ditto/Google_01_TU_02.rb:28:in `new' 
C:/RubymineProjects/ditto/Google_01_TU_02.rb:28:in `<top (required)>' 

第28行是:

tg = TestGoogle.new 

奇怪的是,然後腳本運行完成,並顯示Google登錄頁面。

請注意,目前還沒有斷言 - 我一次只做這一小步。

添加編輯後:

C語言中的初始化:/Ruby193/lib/ruby/1.9.1/minitest/unit.rb:971

def initialize name # :nodoc: 
    @__name__ = name 
    @__io__ = nil 
    @passed = nil 
    end 
+0

Test :: Unit :: TestCase是否要求您在TestGoogle類中實現頂級方法? IOW,它在基礎類中是虛擬的嗎? – KevinDTimm

+0

'TestGoogle'只是繼承'Test :: Unit :: TestCase'的'initialize'。 Test :: Unit :: TestCase初始值設定項是否需要一個參數?即使它看起來有效,但測試類中還有一些不起作用的東西,目前您可能還沒有使用。 – lurker

+0

@mbratch:這是初始化程序的代碼,這對我來說幾乎沒有任何意義: – OldGrantonian

回答

0

我覺得這整個問題是不公平的所有的好評論者。

原因:作爲實驗,我評論出的最後3行的代碼:

tg = TestGoogle.new 
tg.setup 
tg.testSignInLink 

測試跑完美。

我之前假設我需要某種方式來「啓動」Testbridge類中的方法。類似於依次調用所有方法的「Main」程序。

也許這就是@justinko所指的?那麼,TestGoogle類是一個測試運行者?

我想我需要向評論者道歉。

+1

是的,這就是我所指的。當你需要'測試/單元'時,你所有的測試用例(即Test :: Unit :: TestCase的孩子)都會運行。 –

相關問題