¿Cómo puedo probar este método en JUnit?
Escribí este método y traté de probarlo, pero los resultados no coinciden:
public static int BuscarPorNombreDeUsuario(ArrayList<account> A, String nombreDeUsuario) {
int existe = -1;
int longitudDeListaDeBusqueda = A.size();
for (int i = 0; i < longitudDeListaDeBusqueda; i++) {
if (A.get(i).getNombreDeUsuario().equalsIgnoreCase(nombreDeUsuario)) {
existe = i;
} else {
existe = -1;
}
}
return existe;
}
El método de prueba:
public void PruebaBuscarPorNombreDeUsuario() {
ArrayList<account> infoDeCuenta = new ArrayList<>();
Account usuario_1 = new Account("Sarah", "Naghi", "Sarh@hotmail.com", "0500000001", "Sarah", "Ss@12345678", 23);
Account usuario_2 = new Account("Rawan", "Samer", "Rawan@hotmail.com", "0500000002", "RawanS", "Rr@12345678", 22);
Account usuario_3 = new Account("Ragad", "Fahad", "Ragad@hotmail.com", "0500000003", "RagadFt", "Rr@12345678", 22);
Account usuario_4 = new Account("Leen", "Saleh", "Leen@hotmail.com", "0500000004", "LeenS", "Ll@12345678", 23);
infoDeCuenta.add(usuario_1);
infoDeCuenta.add(usuario_2);
infoDeCuenta.add(usuario_3);
infoDeCuenta.add(usuario_4);
// entrada válida
String nombreDeUsuarioVálido = "Sarah";
// entrada inválida
String nombreDeUsuarioInválido = "Shaima";
// prueba
int resultadoEsperado = 0;
int resultado = SaudiGuide.BuscarPorNombreDeUsuario(infoDeCuenta, nombreDeUsuarioVálido);
assertEquals(resultadoEsperado, resultado);
}
¿Cómo puedo hacer una prueba en junit en el método anterior? Si alguien puede ayudarme, estaré muy agradecido.
davy.ai
Parece haber un error en el método SearchByUsername. El problema es que la variable “exists” se establece en -1 en cada iteración del bucle for. Esto significa que si el nombre de usuario no se encuentra en la primera iteración, la variable “exists” ya está establecida en -1 y el bucle no entrará en la instrucción “if” incluso si el nombre de usuario se encuentra en iteraciones posteriores.
Para solucionar esto, la variable “exists” solo debe establecerse en -1 fuera del bucle for (para cubrir el caso cuando el nombre de usuario no se encuentra en absoluto), y dentro del bucle for solo debe establecerse en el índice actual cuando se encuentra el nombre de usuario. Además, una vez que se encuentra el nombre de usuario, el bucle debe terminar y devolver el índice de inmediato.
Aquí está el método corregido:
Para probar este método usando JUnit, puede crear una clase de prueba y agregar un método de prueba como este:
Este método de prueba primero crea un ArrayList de objetos Account y agrega dos usuarios a él. Luego prueba el método searchByUsername con un nombre de usuario válido (“Sarah”) y un nombre de usuario inválido (“Shaima”), verificando que el método devuelve los índices esperados (-1 para Shaima, 0 para Sarah).