2012-04-06 2 views
3

In mehreren Scala-Objekten habe ich eine Hauptmethode definiert, die runTests aufruft, eine abstrakte Methode in Test. Gibt es eine Möglichkeit, die Hauptmethode an einem gemeinsamen Ort (Merkmal oder andere Lösung) auszufällen, so dass ich den Test in Eclipse noch mit der Eingabe ctrl - F11 ausführen kann?Wie kann man die Hauptmethode von Scala-Objekten in einen gemeinsamen Ort ausklammern?

Dies ist, was ich derzeit

https://github.com/janekdb/stair-chess/blob/master/src/chess/model/BoardModelTest.scala

object BoardModelTest extends Test with TestUtils { 

    def main(args: Array[String]) { 
    runTests 
    } 

    def runTests { 
    ... 

https://github.com/janekdb/stair-chess/blob/master/src/test/Test.scala

trait Test { 

    def runTests: Unit 
    ... 
+0

gibt es einen Grund, warum Sie nicht ScalaTest oder specs2 und Ausrollen Ihren eigenen Test-Framework verwenden? – tolitius

+1

@tolitius Mein aktueller Fokus ist das Erlernen der Scala-Grundlagen. Je mehr ich für mich selbst mache, desto besser werde ich mein Ziel erreichen. Später werde ich auf die Adoption von Bibliotheken und Frameworks eingehen. Danke für Ihr Interesse. –

Antwort

8

Ich habe nicht von Eclipse auf diesem Computer haben, so kann ich nicht testen, ob es funktioniert mit Strg + F11, aber ich denke, Sie möchten einen Selbsttyp:

trait Main { 
    self: Test => 
    def main(args: Array[String]) { 
    runTests 
    } 
} 

Sie dann einfach in nach dem Test Merkmale mischen:

object BoardModelTest extends Test with TestUtils with Main { 
    def runTests {} 
} 
+1

Das hat mein Problem perfekt gelöst. Danke für eine tolle Antwort. –

+1

Endergebnis: Main.scala hinzugefügt und die Zeilenzahl an anderer Stelle um 5 x 5 Zeilen reduziert: https://github.com/janekdb/stair-chess/comitt/11bdffffa861132d3a7f3e58e989241cd33460c5 –