我需要测试这种方法 - compare()
。你能得到建议吗?我能做得更好(所有部分如果,否则 - 如果,否则)。如何测试比较器在junit测试
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;
}
}
这recomendations后 - 我们有下一张图片(感谢你们很多!):
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);
一切都是正常的测试了。
请注意,对于较小的值,比较器不需要精确地返回-1或更小的精确值。任何负数/正数都可以。 – Puce
但您需要重写此方法 - private void assertTrue(String message,int resultValue,int compareValues){} –
您正在初始化oneFigure和twoFigure,就像每次测试时一样。这将导致NullPointerException或至少一个测试失败(取决于FigureGeneral的构造函数)。 – Chris311