Heim >Java >javaLernprogramm >Warum nicht die JUnit-Methode „assertNotEquals' bereitstellen?
1. Ich schlage die neuen Assertions im AssertThat()-Stil vor, die es einfach machen, verschiedene Negationen zu beschreiben und automatisch eine Beschreibung dessen generiert, was Sie erwarten und was Sie erhalten, wenn die Assertionen fehlschlagen: AssertThat(objectUnderTest,
is(not(someOtherObject))); assertThat(objectUnderTest, not(someOtherObject)); assertThat(objectUnderTest, not(equalTo(someOtherObject)));
Alle drei Optionen sind gleichwertig. Wählen Sie die aus, die Ihrer Meinung nach am besten lesbar ist (und diese enge Syntax ermöglicht), und Sie benötigen diese Importe:
i
mport static org.junit.Assert.*; import static org.hamcrest.CoreMatchers.*;
2 . Es gibt „assertNotEquals“ in JUnit 4.11:
3. Ich weiß nicht, dass die Asserts-API zum Testen der von ihr bereitgestellten Objekte nicht sehr geeignet ist, und natürlich ist CodeGo.net nicht zu lang, um zu schreiben:
assertFalse(foo.equals(bar));
Mit diesem Argument ist ein Teil der Ausbeute so unglücklich, dass er geteilt werden sollte:
String msg = "Expected <" + foo + "> to be unequal to <" + bar +">"; assertFalse(msg, foo.equals(bar));
Das ist natürlich so, dass die Einführung von AssertNotEqual wahrscheinlich Teil davon sein wird JUnit in der Zukunft: JUnit Issue 22
4. Ich denke, wenn „assertNotEqual“ tatsächlich das ist, was JUnit etwas weniger interessant macht, bedenken Sie, dass dies eine nette Situation ist, wenn das Hinzufügen einer reduzierten API zumindest helfen würde Ich vermute, dass der Grund für die Auslassung darin liegt, dass es zu wenige Multiplayer-Aufrufe gibt. Ich gehe jedoch davon aus, dass es nicht einmal „assertFalse“ gibt, also füge ich am Ende möglicherweise ein positives Ergebnis hinzu, da es nicht schwierig ist Erstens, obwohl ich zugebe, dass es auch elegante Lösungen gibt
5 Sehr spät zur Party, aber ich habe festgestellt, dass das folgende Format für die meisten „nicht gleich“ funktionieren kann. Fälle
static void assertTrue(java.lang.String message, boolean condition)
6. Bei negativen Behauptungen wird im Testbericht ein Diff-Fehler angezeigt
7 . Der Grund dafür ist, dass „assertNotEquals()“ integrierte Befehle sind, ohne sie zuerst in vollwertige Objekte umzuwandeln: Detailliertes Beispiel:int status = doSomething() ; // expected to return 123 assertTrue("doSomething() returned unexpected status", status != 123 ) ;
vs.
.... assertThat(1, not(equalTo(Integer.valueOf(winningBidderId)))); ....
8. Modul-API Konsistenz, warum stellt JUnit nicht „assertNotEquals()“ zur Verfügung, weshalb JUnit es immer mag: „assetStringMatchesTheRegex(regex, str)“ vs. „asserStringDoesntMatchTheRegex(regex, str)“ „asserStringBeginsWith(prefix, str)“ vs. „asserStringDoesntBeginWith(prefix, str)“ d. h. Für eine bestimmte Art von etwas ist kein Ende vorgesehen. Vielleicht möchten Sie Ihrer Argumentation Logik hinzufügen! Es ist besser, Grundelemente wie equalTo(...), is(...), not(...), regex(...) zu testen und diese stattdessen zusammenarbeiten zu lassen, um die Lesbarkeit und Vernunft zu verbessern.
assertNotEqual(1, winningBidderId);
Warum wird die JUnit-Methode „assertNotEquals“ nicht bereitgestellt? Inhalt, weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!