Junit lança o erro de teste "org.opentest4j.AssertionFailedError: Expected javax.validation.ConstraintViolationException to be thrown, but nothing was thrown."

Tenho uma entidade “Article” com alguns atributos anotados com @notBlank e estou testando minha classe repository. O comportamento esperado é: quando tentar salvar um objeto no banco de dados com algum atributo null ou empty, é lençado uma “ConstraintViolationExcpetion”, mas meu teste diz que nada é lançado.

minha entidadde:

@Entity
public class Article {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@NotBlank
private String title;
@NotBlank
private String author;
private LocalDate date;
@NotBlank
@Size(min = 201)
@Lob
private String text;

public Article() {
}

public Article(String title, String author, LocalDate date, String text) {
	this.title = title;
	this.author = author;
	this.date = date;
	this.text = text;
}

classe service:

public interface ArticleService {
Optional<Article> findById(Integer id);
Article findByTitle(String title);
List<Article> findAll();
List<Article> findAllByTitle(String title);
void save(Article article);
}

classe de teste:
-OBS: tenho 5 testes, 4 passam, menos o teste “save_ThrowConstraintViolationExcpetion_WhenTitleIsEmpty()” que dá o seguinte erro: org.opentest4j.AssertionFailedError: Expected javax.validation.ConstraintViolationException to be thrown, but nothing was thrown.

@DataJpaTest
@DisplayName("Classe de teste do ArticleService")
@Import(ArticleServiceImpl.class)
public class ArticleServiceTest {

@Autowired
private ArticleService articleService;

@Test
//nameMethod_expectedAct_state
void save_Persist_WhenSuccessful() {

	final Article result = articleService.save(new Article("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));
}

@Test
void save_ThrowConstraintViolationExcpetion_WhenTitleIsEmpty() {
	Article obj = new Article("", "autor 1", null, "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.");
	
	assertThrows(ConstraintViolationException.class, () -> articleService.save(obj));
	
 }

@Test
void findByTitle_ReturnTheArticle_WhenSuccesseful() {
	
	String expectedTitle = "Title 1";
	Article obj = new Article(expectedTitle, "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.");	
	Article articleSaved = articleService.save(obj);
	
	Article resultExpected = articleService.findByTitle(articleSaved.getTitle());
	String resultTitle = resultExpected.getTitle();
	
	assertEquals(expectedTitle, resultTitle);
}

@Test
void findByTitle_ReturnNull_WhenArticleNotFound() {
	String expectedTitle = "Title 1";
	
	Article resultExpected = articleService.findByTitle(expectedTitle);
	
	assertThat(resultExpected).isNull();
	
}

@Test
void findAllByTitle_ReturnList_WhenSuccessful() {
	String searchedTitle = "Titl";
	
	int expectedResult = 2;
	
	Article u1 = new Article("Title 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.");	
	Article u2 = new Article("Outro Title para os testes", "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.");	
	Article u3 = new Article("Outra coisa", "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(u1);
	articleService.save(u2);
	articleService.save(u3);
	
	List<Article> list = articleService.findAllByTitle(searchedTitle);
	int actualResult = list.size();
	
	assertEquals(expectedResult, actualResult);
}
}