2010-10-29 37 views
1

Ive a obtenu un coureur simple, Nunit pour un script de coupe que j'ai:Ruby ne pas sélectionner correcte méthode surchargée

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 

Quand im appeler ce module à partir de ma tâche:

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

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

Il ne cesse dire moi "mauvais nombre d'arguments (1 pour 2)", et si je supprime la méthode surchargée qui prend 2 arguments cela fonctionne bien, donc y a-t-il des bizarreries avec ruby ​​que je ne connais pas dans ce cas?

+0

Découvrez http://albacorebuild.net - la gemme Albacore est une suite de tâches de rake pour travailler avec les systèmes .net et inclut une tâche NUnit facile à utiliser. docs sont ici: http://github.com/derickbailey/Albacore/wiki/NUnitTask –

Répondre

3

Ruby ne prend pas en charge la surcharge de méthode.

+0

Ah oui, donc une seule signature existe-t-elle pour une méthode donnée? Je suppose qu'il contourne cela avec des arguments optionnels ou quelque chose? – Grofit

+0

@Grofit: C'est vrai. Vous avez besoin d'arguments facultatifs. – jwueller

+0

Grofit: Correct, une seule signature peut exister par méthode. Vous pouvez déclarer des arguments facultatifs (paramètres par défaut). Dans certaines situations, vous pouvez également choisir de remplacer la méthode pour obtenir l'effet (bien que, pour ce que vous décrivez, les paramètres par défaut semblent être le meilleur choix). –