Tengo el siguiente function
:
public static String s(B b) {
int t = b.t();
String r ="Hello ";
for(String z:s) {
boolean x=b.f(t,5);
if(x) {
r+=z;
}
}
return r;
}
Que toma en B - Interface
La Interfaz B
- Métodos int t() and boolean f(int a, int b)
se llevaron a cabo en la misma clase dentro main
como la siguiente:
public static void main(String[] args) {
A.s(new B() { //A - Class
@Override //B - Interface
public int t() {
return 15;
}
@Override
public boolean f(int a, int b) {
return true;
}
});
}
Problema : ¿Cómo puedo comprobar la public static String s(B b)
- Función de una jUnit - test
cuando la función pide una interfaz como parámetro, cuando los métodos de interfaz se llevaron a cabo en main
?
La clase se llama A
, Interfaz:B
Cuando se quiere poner a prueba su s()
método puede proporcionar cualquier referencia a un objeto que implementa la B
interfaz. Se puede definir una clase anónima que implementa la interfaz como lo hizo en su main()
método. O puede definir una clase "normal", que implementa la interfaz también. Por lo tanto se puede escribir algo como esto:
public class Whatever implements B
{
/* your methods from B */
}
A continuación, se utiliza esta clase como cualquier otra clase dentro de su unidad de prueba:
@Test
public void checkSomething() {
String result = A.s(new Whatever());
Assertions.assertEquals("my string", result);
}