wie um zu testen, Komparator bei junit test
Brauche ich um zu testen, diese Methode - compare()
. Können Sie Tipps bekommen? Wie besser kann ich dies tun(alle Teil if, else-if, else).
public class AbsFigure {
class AreaCompare implements Comparator<FigureGeneral> {
@Override
public int compare(FigureGeneral oneFigure, FigureGeneral twoFigure) {
double firstValue = oneFigure.area();
double secondValue = twoFigure.area();
int result = 0;
if (firstValue > secondValue)
result = 1;
else if (firstValue < secondValue)
result = -1;
else
result = 0;
return result;
}
}
Nachdem diese Empfehlungen - wir haben nächste Bild (Danke EUCH Jungs eine Menge!):
public AreaCompare areaCompare = new AreaCompare();
@Test
public void testEqual() {
FigureGeneral oneFigure = new Rectangle(2.0, 2.0, "triangle");
FigureGeneral twoFigure = new Rectangle(2.0, 2.0, "rectangle");
int result = areaCompare.compare(oneFigure, twoFigure);
assertTrue("expected to be equal", result == 0);
}
@Test
public void testGreaterThan() {
FigureGeneral oneFigure = new Triangle(2.0, 2.0, "triangle");
FigureGeneral twoFigure = new Rectangle(1.0, 1.0, "rectangle");
int result = areaCompare.compare(oneFigure, twoFigure);
assertTrue("expected to be greater than", result >= 1);
}
@Test
public void testLessThan() {
FigureGeneral oneFigure = new Rectangle(1.0, 1.0, "rectangle");
FigureGeneral twoFigure = new Triangle(2.0, 2.0, "triangle");
int result = areaCompare.compare(oneFigure, twoFigure);
assertTrue("expected to be less than", result <= -1);
Alles ist normal testen.
InformationsquelleAutor nazar_art | 2013-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur die Instantiierung der Komparator-Klasse auf und übergeben in Objekte:
aber Sie müssen diese Methode überschreiben - private void assertTrue(String message, int resultValue, int compareValues) { }
Sie initialisieren oneFigure und twoFigure genau der gleichen Weise in jedem einzelnen test. Das Ergebnis wäre entweder eine NullPointerException oder in mindestens einem test versagt (abhängig von der Konstruktor der FigureGeneral).
InformationsquelleAutor munyengm
Sieht Filmfehler für mich. Vielleicht loswerden
result
Schreiben Sie mindestens Testfall. Eine für jeden Wert zurückgeben.
compare(a, b)
sollten andere Zeichen alscompare(b, a)
odercompare(a, b) == compare(b, a) == 0
InformationsquelleAutor MrSmith42
Ich hatte vor kurzem eine ähnliche Anforderung und kam mit einigen Hilfsmethoden (nicht veröffentlicht, da die API noch, obwohl). Hier ist der Quellcode:
https://github.com/SoftSmithy/softsmithy-lib/blob/develop/softsmithy-lib-core/src/test/java/org/softsmithy/lib/Tests.java
Hier ist ein test, der verwendet diese utility-Methoden:
https://github.com/SoftSmithy/softsmithy-lib/blob/develop/softsmithy-lib-core/src/test/java/org/softsmithy/lib/util/PositionableComparatorTest.java
http://sourceforge.net/p/softsmithy/_list/hg
. Können Sie direkt hinter dem code genau zu beantworten?InformationsquelleAutor Puce
Nach ein wenig Beratung, guter test:
InformationsquelleAutor nazar_art
Kann es besser sein, um zu testen, für den Vertrag und nicht für die -1/0/1 Werte (oder genauer gesagt, jede positiv - /null - /negativ-Wert). Dies kann mit Hamcrest Matcher in einer sehr übersichtlichen Art und Weise. Betrachten Sie das folgende Beispiel:
Damit Sie nicht merken, welcher Wert steht für was, und die tests machen, die Absicht klar.
InformationsquelleAutor kap