2010-10-29 50 views
1

香港專業教育學院有一個簡單的NUnit的轉輪耙腳本我有:紅寶石不選擇正確的重載方法

module NUnitRunner 

    @NUnitPath = "#{RootDir}/tools/nunit/nunit-console.exe"; 

    def self.RunTests(testFile) 
     system("\"#{@NUnitPath}\" ? \"#{testFile}\"") 
    end 

    def self.RunTests(testFile, runArgs) 
     system("\"#{@NUnitPath}\" ? \"#{testFile}\" #{runArgs}") 
    end 

end 

當IM從我的任務中調用該模塊:

# Run Unit Tests 
task :run_unit_tests do 
    puts "Running Unit Tests" 

    unitTestFile = "#{RootDir}/src/tests/unittests.dll" 
    NUnitRunner.RunTests(unitTestFile) 
end 

它只是不斷告訴我「錯誤的參數數量(1爲2)」,如果我刪除重載的方法,它需要2個參數它工作正常,所以有沒有一些與ruby的怪癖,我不知道在這種情況下?

+0

查看http://albacorebuild.net - Albacore gem是一套用於處理.net系統的rake任務,包含一個易於使用的NUnit任務。 docs在這裏:http://github.com/derickbailey/Albacore/wiki/NUnitTask – 2010-10-29 17:41:01

回答

3

Ruby不支持方法重載。

+0

哦,對,一個給定的方法只能存在一個簽名?我認爲它可以通過可選的參數或其他東西繞過這個問題 – Grofit 2010-10-29 07:27:37

+0

@Grofit:那是對的。你需要可選的參數。 – jwueller 2010-10-29 07:29:29

+0

Grofit:正確的,每種方法只能存在一個簽名。您可以聲明可選參數(默認參數)。在某些情況下,您也可以選擇重寫該方法以實現效果(但是,對於您所描述的內容,默認參數似乎是最佳選擇)。 – 2010-10-29 07:29:34