Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

278
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!