Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

268
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda