Tengo 4 pruebas cada uno con su propia fuente de método, pero la única diferencia entre ellos es un parámetro, en cada método I INIT los simulacros en forma diferente. ¿Hay alguna manera de que me puede pasar múltiples fuentes método?
Ejemplo:
@ParameterizedTest
@MethodSource("mSource1")
public void testM1(MyMock m1, MyMock m2) {
callMut(m1, m2, ENUM.VAL1);
//same assertion
}
@ParameterizedTest
@MethodSource("mSource2")
public void testM2(MyMock m1, MyMock m2) {
callMut(m1, m2, ENUM.VAL2);
//same assertion
}
private static Stream<Arguments> mSource1() {
when(myMock1.getX()).thenReturn("1");
//...
}
private static Stream<Arguments> mSource2() {
when(myMock1.getY()).thenReturn("1");
//...
}
Busco algo como:
@ParameterizedTest
@MethodSource("mSource1", "mSource2")
public void testM1(MyMock m1, MyMock m2, MyEnum myEnumValue) {
callMut(m1, m2, myEnumValue);
//same assertion
}
El @MethodSource
puede aceptar como muchos métodos de fábrica como usted tiene gusto según javadocs:
Cadena abstracta pública [valor]
Los nombres de los métodos de la clase de prueba para uso como fuentes de argumentos; no debe estar vacío.
Así que simplemente poner esas llaves dentro y asegurarse de que devuelven un valor de enumeración también:
@MethodSource({"mSource1", "mSource2"})
Tal como lo veo, sin embargo, puede que tenga que mover el cuándo (). Entonces () puesta a punto para la prueba en sí, pero eso es un detalle de su impl.