Frage

Sonnenfinsternis 3.7.2

Ich habe gerade eine implementiert @Rule in einigen JUnit 4-Tests, aber wenn ich sie in Eclipse ausführe, die MethodRule methoden werden nicht aufgerufen.Es ist, als würde der Eclipse-Testläufer das nicht erkennen @Rule implementierungen und macht nichts Besonderes mit Feldern, die mit annotiert sind @Rule.

Ich habe sogar versucht, eine "Standard" -Methodenregel wie zu verwenden org.junit.rules.TestName es funktioniert jedoch nicht richtig (die Namen des Tests werden nicht in die Instanz eingetragen).Sogar der Beispieltest im JavaDoc von TestName schlägt fehl, wenn es in Eclipse ausgeführt wird.

Gibt es einen Trick?Unterstützt Eclipse JUnit einfach nicht Geschäftsregeln?

War es hilfreich?

Lösung

Es stellte sich heraus, dass jemand ein scheinbar "erforderliches" GLAS in den Laufzeitklassenpfad des betreffenden Projekts eingefügt hatte.Dieses GLAS bettet unter anderem die JUnit-Pakete ein, die es nicht sollte!Da ist also dieses GLAS, das so etwas Harmloses heißt our_runtime_library.jar das hat einen App-spezifischen Code zusammen mit einigen unbekannten (aber alten) Versionen von JUnit, Spring und wer weiß was noch.Beim Ausführen des Projekts als Komponententest hat Eclipse den JUnit in diesem JAR anstelle seiner eigenen Version (projektspezifische Bibliotheken haben immer Vorrang), der (Eclipse-) Version, auf der das Projekt basiert, übernommen.

Was für eine Sauerei;jetzt ab, um herauszufinden, wer dafür 50 Peitschenhiebe verdient.

Andere Tipps

Es sollte funktionieren, zumindest in meiner Sonnenfinsternis (in eingebettetem JUnit 4.8).So könnten Sie Ihren Code zeigen.

Zusätzlich sagt JavaDoc: Note that MethodRule is now deprecated, you should be using TestRule instead.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top