Ich muss diese Methode testen - compare()
. Kannst du einen Rat bekommen? Wie kann ich das besser machen (alles Teil wenn, sonst - wenn, sonst).Wie man einen Vergleicher bei Junit Test
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;
}
}
Nach diesem recomendations - wir nächstes Bild haben (Danke Jungs viel!):
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);
Alle jetzt normalen Test ist.
Beachten Sie, dass ein Komparator nicht benötigt wird, um -1 für kleinere oder genau 1 für größere Werte zurückzugeben. Jede negative/positive Zahl reicht aus. – Puce
Sie müssen diese Methode jedoch überschreiben - private void assertTrue (String message, int resultValue, int compareValues) {} –
Sie initialisieren oneFigure und twoFigure auf die gleiche Weise in jedem einzelnen Test. Dies würde entweder zu einer NullPointerException oder zu mindestens einem Test führen (abhängig vom Konstruktor von FigureGeneral). – Chris311