Pregunta

package com.fitaxis.test;

import java.sql.SQLException;

import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import static org.mockito.Mockito.*;

import com.fitaxis.leaderboard.LeaderBoard;

public class LeaderBoardTests {


 @Test 
 public void TestThatDataIsSavedToTheDatabase()
 {
  LeaderBoard leaderBoard = mock(LeaderBoard.class);
  //doNothing().doThrow(new RuntimeException()).when(leaderBoard).saveData();

  when(leaderBoard.saveData()).thenReturn(true);

  boolean res = leaderBoard.saveData();

  verify(leaderBoard).saveData();

  Assert.assertTrue(res);
 }

}

he utilizado Mockito para burlarse de una clase, pero cuando se utiliza la cobertura de código que no detecta que el método que se ha llamado. ¿Estoy haciendo algo mal? Por favor, ayuda!

¿Fue útil?

Solución

Parece que estás burlando a cabo el único que está haciendo llamar al código de producción.

En otras palabras, la prueba dice:

  • Cuando llamo saveData(), falsificar el resultado a devolver true
  • Ahora llamar saveData() - yay, el resultado era verdad

No es de tu código de producción está siendo llamadas en absoluto, por lo que yo puedo ver.

El punto de burla es para burlarse a cabo las dependencias de su clase de producción, o (a veces, aunque prefiero no) para burlarse de algunos métodos de la clase de producción que el código que en realidad está probando llamará.

Debe probablemente burlarse de las dependencias de Leaderboard en lugar de Leaderboard sí. Si debe burlarse cabo saveData(), usted debe estar probando los métodos que llamada saveData() ... cheque que guardar los datos correctos, que actúan correctamente cuando se vuelve saveData() falsa, etc.

Otros consejos

Si entiendo bien su pregunta:

porque se está burlando de clasificación. Eso significa que no está probando la misma.

Si desea probar clasificación, se debe probar no la clase real el burlado.

Vamos a decir que desea una clase de prueba, pero esto depende de la clase B y B es un poco difícil para crear una instancia en la prueba de medio ambiente (por cualquier motivo). en tales casos se puede burlarse B.

pero aquí es el caso de que se están burlando de clase en sí una. Esto significa que no está probando nada.

clase corredor complemento como MockitoJUnitRunner, consulte el siguiente código de ejemplo

import org.mockito.junit.MockitoJUnitRunner

@RunWith(MockitoJUnitRunner.class)
public class MockitTesterClass{
    @Mock
    private TestService testServiceMock;
}

Ahora la cobertura de código aumentará

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top