Tengo que probar este método – compare(). Usted puede obtener asesoramiento? Cómo puedo hacer esto(toda la parte 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;
    }
}

Después de esto recomendaciones – tenemos la siguiente imagen (Gracias chicos un montón!):

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

Todo es normal ahora las pruebas.

OriginalEl autor nazar_art | 2013-01-03

5 Comentarios

  1. 13

    Acaba de crear una instancia de su comparador de clase y pase en objetos:

    public class Test extends TestCase {
    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;
    }
    }
    private final AreaCompare areaCompare = new AreaCompare();
    @Test
    public void testEqual() {
    FigureGeneral oneFigure = new FigureGeneral();
    FigureGeneral twoFigure = new FigureGeneral();
    int result = areaCompare.compare(oneFigure, twoFigure);
    assertTrue("expected to be equal", result == 0);
    }
    @Test
    public void testGreaterThan() {
    FigureGeneral oneFigure = new FigureGeneral();
    FigureGeneral twoFigure = new FigureGeneral();
    int result = areaCompare.compare(oneFigure, twoFigure);
    assertTrue("expected to be greater than", result >= 1);
    }
    @Test
    public void testLessThan() {
    FigureGeneral oneFigure = new FigureGeneral();
    FigureGeneral twoFigure = new FigureGeneral();
    int result = areaCompare.compare(oneFigure, twoFigure);
    assertTrue("expected to be less than", result <= -1);
    }
    }
    Tenga en cuenta que un comparador no está obligado a devolver exactamente -1 para los más pequeños o exactamente 1 para valores mayores. Negativo / positivo número va a hacer.
    pero usted necesita reemplazar este método – private void assertTrue(String mensaje, int resultValue, int compareValues) { }
    Está inicializando oneFigure y twoFigure de la misma manera en cada una de las pruebas. Esto podría resultar en un NullPointerException o en al menos una prueba en su defecto (dependiendo del constructor de FigureGeneral).

    OriginalEl autor munyengm

  2. 2

    Recientemente tuve un requisito similar y vino para arriba con algunos métodos auxiliares (no publicada como API sin embargo, a pesar de que). Aquí está el código fuente:

    https://github.com/SoftSmithy/softsmithy-lib/blob/develop/softsmithy-lib-core/src/test/java/org/softsmithy/lib/Tests.java

    Aquí es una prueba, que utiliza estos métodos de utilidad:

    https://github.com/SoftSmithy/softsmithy-lib/blob/develop/softsmithy-lib-core/src/test/java/org/softsmithy/lib/util/PositionableComparatorTest.java

    es redirets a http://sourceforge.net/p/softsmithy/_list/hg. Usted puede simplemente más allá de su código exactamente la respuesta?

    OriginalEl autor Puce

  3. 1

    Se ve buena para mí. Tal vez deshacerse de result

    class AreaCompare implements Comparator<FigureGeneral> {
    @Override
    public int compare(FigureGeneral oneFigure, FigureGeneral twoFigure) {
    double firstValue = oneFigure.area();
    double secondValue = twoFigure.area();
    if (firstValue > secondValue)
    return 1;
    else if (firstValue < secondValue)
    return -1;
    return 0;
    }
    }

    Escribir al menos un caso de prueba. Uno para cada valor de retorno.

    compare(a, b) debe tener distinto signo que compare(b, a) o

    compare(a, b) == compare(b, a) == 0

    OriginalEl autor MrSmith42

  4. 0

    Después de un poco de consejo, una buena prueba:

        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);
    }

    OriginalEl autor nazar_art

  5. 0

    Puede ser mejor prueba para el contrato, y no para el -1/0/1 los valores (o, más precisamente, cualquier positiva/cero/valor negativo). Esto se puede hacer con Hamcrest dispositivos de correspondencia de una manera muy concisa. Considere el siguiente ejemplo:

    import static org.hamcrest.Matchers.comparesEqualTo;
    import static org.hamcrest.Matchers.greaterThan;
    import static org.hamcrest.Matchers.lessThan;
    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");
    assertThat(oneFigre comparesEqualTo(twoFigure));
    assertThat(twoFigure, comparesEqualTo(oneFigure));
    }
    @Test
    public void testGreaterThan() {
    FigureGeneral oneFigure = new Triangle(2.0, 2.0, "triangle");
    FigureGeneral twoFigure = new Rectangle(1.0, 1.0, "rectangle");
    assertThat(oneFigure, greaterThan(twoFigure));
    }
    @Test
    public void testLessThan() {
    FigureGeneral oneFigure = new Rectangle(1.0, 1.0, "rectangle");
    FigureGeneral twoFigure = new Triangle(2.0, 2.0, "triangle");
    assertThat(oneFigure, lessThan(twoFigure));
    }

    Por lo tanto usted no tiene que recordar que el valor representa lo que y las pruebas que hacen a la intención clara.

    OriginalEl autor kap

Dejar respuesta

Please enter your comment!
Please enter your name here