2012-07-17 8 views
13

Wie deaktiviert man eine Testsuite, d. H. Alle Tests innerhalb der Klasse FunSpec erweitert?So deaktivieren Sie Testsuite in ScalaTest

Die einzige Lösung, die ich gefunden habe, ist it durch ignore vor jedem Test zu ersetzen, aber es ist langweilig, dies mit den Dutzenden von Tests zu tun.

+2

Was auch immer Sie tun, [kommentieren Sie es nicht aus:)] (http://www.informit.com/articles/article.aspx?p=1334908) –

Antwort

21

Der einfache Weg, dies in 1.8 zu tun, ist, einen Konstruktor hinzuzufügen, der ein Dummy-Argument annimmt. ScalaTest (und SBT) wird die Klasse nicht entdecken, wenn es kein öffentliches hat, kein argument Konstruktor:

class MySuite(ignore: String) extends FunSuite { 
    // ... 
} 

In 2.0 Sie werden in der Lage sein, nur @Ignore auf die Klasse schreiben:

@Ignore 
class MySuite extends FunSuite { 
    // ... 
} 
+0

Ich versuchte dies, aber es hatte keine Auswirkungen, die ich verwende scala 2.10.2, bitte hilf mir. @BillVenners – user3995789

2

Tags sind eine Option, aber Sie müssen jeden Test entsprechend kennzeichnen, Sie können damit keine vollständigen Anzüge ausschließen. Wie jedoch der Nutzer272735 erwähnt hat, ist das Markieren von Tests eine einmalige Anstrengung.

Eine weitere Option ist das Definieren einer Master-Suite und das Beschränken der Liste nestedSuites auf die Suiten, die Sie ausführen möchten (see the docs). Der offensichtliche Nachteil besteht darin, dass Sie die Master-Testsuite pflegen müssen, d. H. Neu erstellte Testsuiten hinzufügen müssen. Sie können dies vermeiden, indem Sie Ihre Ordner erneut durchsuchen, eine Liste aller gefundenen Testanzüge erstellen und die von Ihnen in eine schwarze Liste übernommenen abziehen. Darüber hinaus bietet das erneute Durchlaufen Ihrer Ordner die Möglichkeit, Dateien zu filtern, die einem (extern) gegebenen Kriterium entsprechen.

Eine dritte Option - wenn auch mehr Hacky - ist es, das Paket zu ändern, zu dem die Suiten gehören, die Sie in die Blacklist aufnehmen möchten. Sie können dann einen Testläufer verwenden, um nur Anzüge auszuführen, die in bestimmten Paketen enthalten sind. Lesen Sie mehr in der Dokumentation, Abschnitt "Specifying 'members-only' and 'wildcard' Suite paths".

5

Sie können @Ignore sowohl für verschiedene Tests und den ganzen Anzug verwenden.