es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cuando se realiza una prueba en una clase, se verifica el funcionamiento dentro del método utilizando Junit y Mockito.

Tengo una clase que cubro con pruebas, estoy teniendo dificultades, ¿cómo puedo verificar que dentro de un método addBeginList (), la operación “list.add (int)” ocurra en una lista específica? Usando la biblioteca Moсkito, ¿cómo puedo comprobar que se llamó a un método específico en una lista dentro de una clase?

Clase ClassA:

public class ClassA implements IClassA {

    private List<integer> list;

    public ClassA (List<integer> list) {
        this.list = list;
    }

    @Override
    public int addBeginList() {

        long t1 = System.currentTimeMillis();
        list.add(5);
        long t2 = System.currentTimeMillis();

        return (int) t2 - (int) t1;
    }
}

Clase de prueba ClassATest:
“`java
@RunWith(MockitoJUnitRunner.class)
public class ClassATest{

<pre><code>private ClassA mockClassA;
private static final int EXPECTED = 0;
private static final int DELTA = 1000;
private static final int SIZE = 7000;

@Before
public void setUp() throws Exception {
mockClassA = Mockito.mock(ClassA.class);
mockClassA.initialize(SIZE);
mockClassA.addBeginList();
}

@Test
public void initialize() {

}

@Test
public void addBeginList() {
assertEquals(EXPECTED, mockClassA.addBeginList(), DELTA);
}
</code></pre>

}
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para verificar que la operación “list.add(int)” ocurre en una lista específica dentro del método “addBeginList()” de la clase ClassA utilizando Mockito, puedes crear un objeto simulado (mock) de la lista y pasarlo al constructor de ClassA durante la configuración de la prueba. Luego, puedes usar el método verify() de Mockito para verificar que se llamó una vez al método “add(int)” en el objeto simulado de la lista con el argumento correcto.

    Aquí tienes un ejemplo de cómo puedes modificar la clase de prueba para lograr esto:

    @RunWith(MockitoJUnitRunner.class)
    public class ClassATest {
    
        private ClassA classA;
        private List<integer> mockList;
    
        @Before
        public void setUp() {
            mockList = Mockito.mock(List.class);
            classA = new ClassA(mockList);
        }
    
        @Test
        public void testAddBeginList() {
            // Llama al método
            classA.addBeginList();
    
            // Verifica que se haya llamado una vez al método list.add(int) en el objeto simulado de la lista con el argumento 5
            Mockito.verify(mockList, Mockito.times(1)).add(5);
        }
    }
    

    En este ejemplo, la prueba configura un objeto simulado de la lista utilizando el método mock() de Mockito y lo pasa al constructor de ClassA. Luego, llama al método “addBeginList()” en la instancia de ClassA. Finalmente, utiliza el método verify() de Mockito para verificar que se haya llamado una vez al método “add(int)” en el objeto simulado de la lista con el argumento 5.

    Si el método “add(int)” se llama más de una vez o con un argumento diferente, la prueba fallará. Esto verifica que el método “add(int)” se llame solo una vez con el argumento correcto y garantiza que el método “addBeginList()” se comporte como se espera.

Comments are closed.