P: ¿cómo detectar la cobertura de prueba real?Cobertura frente al código alcanzable
He notado un problema con la métrica de cobertura de código y la calidad de la prueba: la cobertura de código 100% no significa que el código esté realmente probado.
A veces la prueba ofrece una cobertura del 100%, incluso si no cubre todo. El problema se establece en la definición de cobertura, suponemos cobertura == código alcanzable.
Pero no es cierto, el código podría ser 100% alcanzable pero no cubierto al 100% con la prueba.
Eche un vistazo al ejemplo, esta prueba ofrece una cobertura del 100% (EMMA), pero en realidad no cubre los valores que se pasarán a la simulación del servicio. Entonces, si se cambiará el valor, la prueba no fallará.
Ejemplo:
public class User {
public static final int INT_VALUE = 1;
public static final boolean BOOLEAN_VALUE = false;
public static final String STRING_VALUE = "";
private Service service;
public void setService(Service service) {
this.service = service;
}
public String userMethod() {
return service.doSomething(INT_VALUE, BOOLEAN_VALUE, STRING_VALUE);
}
}
y prueba de ello:
public class UserTest {
private User user;
private Service easyMockNiceMock;
@Before
public void setUp() throws Exception {
user = new User();
easyMockNiceMock = EasyMock.createNiceMock(Service.class);
}
@Test
public void nonCoverage() throws Exception {
// given
user.setService(easyMockNiceMock);
expect(easyMockNiceMock.doSomething(anyInt(), anyBoolean(), (String) anyObject())).andReturn("");
replay(easyMockNiceMock);
// when
user.userMethod();
// then
verify(easyMockNiceMock);
}
}
Lástima que no funciona para la versión actual de .net. Me hubiera encantado hacer esto para dar un giro. – Gishu
He intentado googlear sobre frameworks de mutaciones pero ninguno de ellos tiene integración con IDE (preferiblemente IDEA). –
Jester adoptó un enfoque bastante ingenuo para las pruebas de mutación y, por lo tanto, fue glacialmente lento. Si está buscando pruebas de mutaciones, es posible que desee probar un sistema más moderno, como http://pitest.org o javalanche – henry