Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

276
Vistas
Prueba unitaria de escritura con JUnit y Mockito

Tengo un método en la capa de servicio para guardar un elemento en la base de datos. Este método primero verifica si hay un elemento con el mismo nombre en la base de datos. Si lo hay, lanza una excepción con un mensaje, si no lo hay, simplemente guarda el nuevo elemento. Aquí está el código;

 public TodoList saveTodoList(TodoList todoList) { List<TodoList> match = StreamSupport.stream(getAllTodoLists().spliterator(), false) .filter(list -> list.getName().equals(todoList.getName())) .collect(Collectors.toList()); if (match.size() > 0) throw new ExistingDataException("Todo List already exists!"); else return todoListRepository.save(todoList); }

Estoy tratando de aprender a probar con JUnit 5 y Mockito y estoy un poco confundido acerca de qué probar en general. ¿Cuántas pruebas debo escribir para este método? ¿Necesito probar la transmisión (ni siquiera sé cómo)? ¿Cómo puede decidir qué probar en un método?

Editar: Aquí está mi clase de prueba y métodos de prueba para el método de guardado;

 @ExtendWith(MockitoExtension.class) class TodoListServiceTest { @Mock private ITodoListRepository todoListRepository; @InjectMocks private TodoListService todoListService; @Test @DisplayName("Should save the list to the repository") public void whenGivenTodoListDoesNotExistInDatabase_ThenSaveNewList() { TodoList mockList = mock(TodoList.class); mockList.setId(1); mockList.setName("List 1"); when(todoListRepository.save(any(TodoList.class))).thenReturn(mockList); TodoList actual = todoListService.saveTodoList(mockList); assertEquals(mockList.getId(), actual.getId()); assertEquals(mockList.getName(), actual.getName()); } @Test @DisplayName("Should throw exception if there is a list with given item's name") public void shouldThrowExistingDataException_IfThereIsAList_WithTheSameName() { TodoList mockList = mock(TodoList.class); mockList.setId(1); mockList.setName("List 1"); Throwable actualException = assertThrows(ExistingDataException.class, () -> { todoListService.saveTodoList(mockList); }); assertTrue(actualException.getMessage().contains("Todo List already exists!")); }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Intentaré responder a algunas de las preguntas que me habéis hecho:

¿Cuántas pruebas debo escribir para este método? Esencialmente, al escribir casos de prueba para una función o pieza de código, no hay límite en la cantidad de casos de prueba que debe escribir. En general, intenta probar al menos 1 flujo positivo y 1 flujo negativo. Si su pieza de código tiene muchos casos extremos, entonces probablemente verifíquelos también.

¿Necesito probar la transmisión (ni siquiera sé cómo)? : No. Stream es una característica Java incorporada, no prueba las características incorporadas. Solo prueba tu lógica.

¿Cómo puede decidir qué probar en un método?: Como mencioné anteriormente, generalmente prueba flujos positivos y flujos negativos, incluidos los casos extremos. Para la función anterior, parece que tiene 1 flujo positivo y 1 negativo. Su escenario positivo podría ser donde espera que el valor no esté presente en su base de datos y almacene correctamente los datos y su escenario negativo puede ser cuando esos datos ya están presentes y lanza una excepción. Estos son dos casos de prueba mínimos que debe escribir.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda