Heim  >  Artikel  >  Java  >  Warum nicht die JUnit-Methode „assertNotEquals“ bereitstellen?

Warum nicht die JUnit-Methode „assertNotEquals“ bereitstellen?

黄舟
黄舟Original
2016-12-29 09:14:011627Durchsuche

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)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn