Unit-test: nimmt nicht arbeiten?
Ich bin auftragen UnitTest nur für eine Weile, und heute traf ich etwas sehr merkwürdiges. Erwägen Sie den folgenden code:
TestObject alo = null;
assert alo != null; //Pass!!!
Assert.assertNotNull(alo); //Fail, as expected.
Habe ich gegoogelt um und finden, die behaupten, java-built-in, während assertNotNull ist JUnit unterstützt. Aber ich kann nicht verstehen, warum behaupten Sie beschweren sich nicht, etwas über das null-Objekt?
Stellen Sie sicher, Sie haben Behauptungen aktiviert, wenn Sie Sie ausführen (
Wenn Sie code ausführen, der in maven (test task) Behauptung, die standardmäßig aktiviert sind.
und ajozwik: ja, ich glaube, ich verstehe das problem jetzt. Wenn ich Unit-Tests durch Eclipse JUnit, es scheint, dass es fehlt "-ea" - parameter. Aber wenn ich mit maven zu bauen, maven Fehler zu melden. Ich dachte sogar, dass Sie die Verwendung der verschiedenen Versionen des jdk.
cis.upenn.edu/~matuszek/cit594-2004/Seiten/...
vielen Dank für die Erwähnung! Hatte es nicht beim laufen und ich Frage mich, warum es war vorbei. Für andere, es ist
-ea
auf der Kommandozeile).Wenn Sie code ausführen, der in maven (test task) Behauptung, die standardmäßig aktiviert sind.
und ajozwik: ja, ich glaube, ich verstehe das problem jetzt. Wenn ich Unit-Tests durch Eclipse JUnit, es scheint, dass es fehlt "-ea" - parameter. Aber wenn ich mit maven zu bauen, maven Fehler zu melden. Ich dachte sogar, dass Sie die Verwendung der verschiedenen Versionen des jdk.
cis.upenn.edu/~matuszek/cit594-2004/Seiten/...
vielen Dank für die Erwähnung! Hatte es nicht beim laufen und ich Frage mich, warum es war vorbei. Für andere, es ist
java -ea mainClassName
InformationsquelleAutor Hoàng Long | 2012-04-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hoang, ich glaube, du bist immer ein wenig verwirrt zwischen Java-Sprache behauptet-und JUnit-asserts.
Den behaupten Schlüsselwort in Java wurde Hinzugefügt, 1.4, und ermöglichen soll, um zu überprüfen, die interne Konsistenz in der a-Klasse. Die best-practice-Empfehlung war, um Sie in private Methoden zu testen-Programm-Invarianten. Wenn eine Assertion fehlschlägt, wird eine java.lang.AssertionError geworfen und ist in der Regel nicht dazu gedacht zu sein gefangen. Die Idee war, Sie könnten aktiviert werden, die beim Debuggen und Behinderte im Produktions-code (das ist der Standard), aber ehrlich gesagt, ich glaube nicht, dass Sie jemals wirklich gefangen auf. Ich habe nicht gesehen, dass Sie verwendet viel.
JUnit hat auch behauptet, in form von vielen verschiedenen statischen Methoden in der org.junit.Behaupten Paket. Diese sind gedacht, um zu überprüfen, die Ergebnisse einer bestimmten Prüfung. Diese behauptet auch werfen eine java.lang.AssertionError, aber das JUnit-framework ist set-up zu fangen und zeichnen Sie diese Fehler und generiert einen Bericht mit allen Fehlern am Ende der Testfahrt. Dies ist die weitere gemeinsame Nutzung der behauptet, IMO.
Kann man offensichtlich entweder nur eine, aber die JUnit-asserts sind weit mehr Ausdruckskraft, und Sie nicht haben, um sorgen über das aktivieren oder deaktivieren. Auf der anderen Seite, Sie sind nicht wirklich für den Einsatz im business-code.
EDIT: Hier ein code-Beispiel, das funktioniert:
Hier ist die Ausgabe von einem mit Java-assertions deaktiviert (Standardeinstellung):
Hier ist ein Lauf mit Java-assertions aktiviert (-ea):
Ankündigung im ersten Beispiel werden die Java-assert geht und bei der zweiten scheitert es.
Ich aktualisiert meine Antwort mit einem code-Beispiel zu zeigen Ihnen den Unterschied.
ja, ich habe es selber getestet. Leider kann ich nicht finden, trotzdem zu ermöglichen "-ea" in Eclipse "Run as" - Befehl. Vielleicht sollte ich wechseln, jUnit...
Stück Kuchen! Anstelle von "Ausführen als" verwenden "Run configurations". Klicken Sie auf die Registerkarte Argumente aus und setzen "-ea" (ohne Anführungszeichen) in den "VM arguments" - box. Klicken Sie dann auf Ausführen. Das wird es für Sie tun.
danke. Es funktioniert jetzt
InformationsquelleAutor Ryan Nelson
Die assert-Schlüsselwort ist deaktiviert standardmäßig für die Java-VM (siehe http://docs.oracle.com/cd/E19683-01/806-7930/6jgp65ikq/index.html). Verschiedene Java-tools kann oder kann nicht konfiguriert werden, um die Behauptungen standardmäßig.
Eclipse zurzeit NICHT aktivieren Behauptungen standardmäßig beim ausführen von JUnit-tests. (Siehe die Diskussion über https://bugs.eclipse.org/bugs/show_bug.cgi?id=45408 - der Grund, warum nicht ist die Erhaltung der rückwärts-Kompatibilität).
Aber seit Eclipse 3.6 gibt es eine einfache Möglichkeit in Eclipse, um sicherzustellen, dass assertions sind standardmäßig aktiviert für JUnit-tests. Öffnen JUnit "Voreinstellungen" (Windows | Preferences | Java | Junit) und wählen Sie die option "Add '-ea' in den VM-Argumenten beim erstellen eines neuen JUnit-Einführung-Konfiguration". Beachten Sie, dass diese Einstellung nicht ändern, bestehende JUnit-Einführung-Konfigurationen, für die Sie brauchen, um es manuell hinzufügen "-ea" - Einstellung für die VM-argument-box für jedes dieser Start-Konfiguration.
InformationsquelleAutor Basil Vandegriend
Its a bug
Seine ein bug innerhalb eclipse.
InformationsquelleAutor Peter Rader