"expecting code to raise a throwable" erro ao gerar o testo no Junit
7 respostas
testjunitspringjavateste
R
Ramon_Jales
o que eu to querendo testar é o método “save_throwConstraintViolationExcpetion_WhenTitleIsEmpty()”, ou seja, quando meu titulo for nulo, ele lançar uma exceção, mas o meu teste não está passando esse método. O que está errado?
classe de teste:
@DataJpaTest@DisplayName("Classe de teste do ArticleService")@Import(ArticleServiceImpl.class)publicclassArticleServiceTest{@AutowiredprivateArticleServicearticleService;@Test//nameMethod_expectedAct_statevoidsave_Persist_WhenSuccessful(){finalArticleresult=articleService.save(newArticle("article 1","autor 1",LocalDate.of(1998,05,12),"O lorem ipsum é um texto bastante conhecido dos profissionais de design e editoração. Trata-se de um poema em latim, escrito por Cícero em 45 a.C, com as letras embaralhadas. É utilizado no mundo todo para preencher espaços em publicações antes da inserção do conteúdo real."));assertAll(()->assertThat(result).isNotNull(),()->assertThat(result.getAuthor()).isNotBlank(),()->assertThat(result.getTitle()).isNotBlank(),()->assertThat(result.getText()).isNotBlank(),()->assertThat(result.getDate()).asInstanceOf(InstanceOfAssertFactories.LOCAL_DATE));}@Testvoidsave_throwConstraintViolationExcpetion_WhenTitleIsEmpty(){Articleobj=newArticle(null,"autor 1",LocalDate.of(1998,05,12),"O lorem ipsum é um texto bastante conhecido dos profissionais de design e editoração. Trata-se de um poema em latim, escrito por Cícero em 45 a.C, com as letras embaralhadas. É utilizado no mundo todo para preencher espaços em publicações antes da inserção do conteúdo real.");articleService.save(obj);assertThatExceptionOfType(ConstraintViolationException.class).isThrownBy(()->articleService.save(obj)).withMessageContaining("O nome do título não pode ser vazio!");}}
Se o set vier preenchido, significa que alguma validação não passou.
R
Ramon_Jales
amigo, nao entendi muito bem. onde eu colocaria esse trecho de código? depois que criar a instancia do meu Article e salva-lo no banco de dados? e qual assert eu uso?
Não, após instanciar, você valida a instância com o Validator, conforme o @Lucas_Camara mostrou.
R
Ramon_Jales
entendi. E depois disso eu uso qual assert? como eu poderia usar essa variável “violations” ?
L
Lucas_Camara
O Set<ConstraintViolation<Article>> violations vai retornar tudo que não passou na validação. Basta vc verificar cada item do Set. Se me lembro, vc consegue pegar a mensagem gerada em cada validação.