From cfd8ef9cde4005729b57bbafc200052ffe62b0fa Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 23 Sep 2020 10:09:05 +0200 Subject: [PATCH] =?UTF-8?q?DATAJPA-1783=20-=20Migrate=20off=20ExpectedExce?= =?UTF-8?q?ption=20and=20Test(expected=3D=E2=80=A6)=20to=20AssertJ's=20ass?= =?UTF-8?q?ertThatExceptionOfType(=E2=80=A6)=20and=20assertThat=E2=80=A6Ex?= =?UTF-8?q?ception(=E2=80=A6).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now no longer use the ExpectedException rule and JUnit's built-in exception assertion on Test-method level. Instead we use AssertJ's functional exception assertions. --- ...eryByExamplePredicateBuilderUnitTests.java | 22 ++++++------ .../data/jpa/domain/JpaSortTests.java | 28 +++++++-------- ...tingBeanFactoryPostProcessorUnitTests.java | 5 +-- .../JavaConfigUserRepositoryTests.java | 11 +++--- .../RepositoryWithCompositeKeyTests.java | 13 +------ .../RepositoryWithIdClassKeyTests.java | 5 +-- .../repository/UserRepositoryFinderTests.java | 6 ++-- .../jpa/repository/UserRepositoryTests.java | 29 ++++++++------- .../AuditingBeanDefinitionParserTests.java | 5 +-- .../CustomRepositoryFactoryConfigTests.java | 4 +-- ...JpaRepositoryConfigExtensionUnitTests.java | 9 +++-- .../jpa/repository/query/Jpa21UtilsTests.java | 8 +++-- .../query/JpaQueryExecutionUnitTests.java | 18 +++++----- .../query/JpaQueryMethodUnitTests.java | 36 ++++++++++--------- .../query/LikeBindingUnitTests.java | 20 +++++------ .../repository/query/NamedQueryUnitTests.java | 6 ++-- .../query/ParameterBinderUnitTests.java | 6 ++-- .../PartTreeJpaQueryIntegrationTests.java | 18 ++++------ .../repository/query/QueryUtilsUnitTests.java | 10 +++--- .../query/SimpleJpaQueryUnitTests.java | 14 +++----- .../query/StringQueryUnitTests.java | 15 ++++---- .../DefaultJpaContextIntegrationTests.java | 16 +++------ .../support/DefaultJpaContextUnitTests.java | 11 +++--- .../DefaultJpaEntityMetadataUnitTest.java | 4 +-- ...tTransactionDisablingIntegrationTests.java | 5 +-- .../JpaEntityInformationSupportUnitTests.java | 5 +-- .../JpaRepositoryFactoryBeanUnitTests.java | 13 +++---- .../JpaRepositoryFactoryUnitTests.java | 14 ++++---- ...QuerydslJpaPredicateExecutorUnitTests.java | 5 +-- .../support/QuerydslJpaRepositoryTests.java | 5 +-- .../QuerydslRepositorySupportTests.java | 8 ++--- .../support/SimpleJpaRepositoryUnitTests.java | 5 +-- ...PersistenceUnitPostProcessorUnitTests.java | 17 ++++----- 33 files changed, 195 insertions(+), 201 deletions(-) diff --git a/src/test/java/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilderUnitTests.java b/src/test/java/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilderUnitTests.java index 6ec32121d..a7bbd0ec9 100644 --- a/src/test/java/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilderUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/convert/QueryByExamplePredicateBuilderUnitTests.java @@ -15,7 +15,7 @@ */ package org.springframework.data.jpa.convert; -import static org.assertj.core.api.AssertionsForInterfaceTypes.*; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.springframework.data.domain.Example.*; @@ -38,13 +38,12 @@ import javax.persistence.metamodel.SingularAttribute; import javax.persistence.metamodel.Type; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.ArgumentMatchers; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; + import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher; import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatcher; @@ -84,8 +83,6 @@ public class QueryByExamplePredicateBuilderUnitTests { SingularAttribute skillNameAttribute; SingularAttribute skillNestedAttribute; - public @Rule ExpectedException exception = ExpectedException.none(); - @Before public void setUp() { @@ -134,19 +131,22 @@ public class QueryByExamplePredicateBuilderUnitTests { doReturn(orPredicate).when(cb).or(ArgumentMatchers.any()); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-218 + @Test // DATAJPA-218 public void getPredicateShouldThrowExceptionOnNullRoot() { - QueryByExamplePredicateBuilder.getPredicate(null, cb, of(new Person()), EscapeCharacter.DEFAULT); + assertThatIllegalArgumentException().isThrownBy( + () -> QueryByExamplePredicateBuilder.getPredicate(null, cb, of(new Person()), EscapeCharacter.DEFAULT)); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-218 + @Test // DATAJPA-218 public void getPredicateShouldThrowExceptionOnNullCriteriaBuilder() { - QueryByExamplePredicateBuilder.getPredicate(root, null, of(new Person()), EscapeCharacter.DEFAULT); + assertThatIllegalArgumentException().isThrownBy( + () -> QueryByExamplePredicateBuilder.getPredicate(root, null, of(new Person()), EscapeCharacter.DEFAULT)); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-218 + @Test // DATAJPA-218 public void getPredicateShouldThrowExceptionOnNullExample() { - QueryByExamplePredicateBuilder.getPredicate(root, null, null, EscapeCharacter.DEFAULT); + assertThatIllegalArgumentException() + .isThrownBy(() -> QueryByExamplePredicateBuilder.getPredicate(root, null, null, EscapeCharacter.DEFAULT)); } @Test // DATAJPA-218 diff --git a/src/test/java/org/springframework/data/jpa/domain/JpaSortTests.java b/src/test/java/org/springframework/data/jpa/domain/JpaSortTests.java index d9e16f13d..f70fee40d 100644 --- a/src/test/java/org/springframework/data/jpa/domain/JpaSortTests.java +++ b/src/test/java/org/springframework/data/jpa/domain/JpaSortTests.java @@ -25,9 +25,9 @@ import javax.persistence.metamodel.PluralAttribute; import org.junit.Test; import org.junit.runner.RunWith; + import org.springframework.data.domain.Sort.Order; -import org.springframework.data.jpa.domain.JpaSort.JpaOrder; -import org.springframework.data.jpa.domain.JpaSort.Path; +import org.springframework.data.jpa.domain.JpaSort.*; import org.springframework.data.jpa.domain.sample.Address_; import org.springframework.data.jpa.domain.sample.MailMessage_; import org.springframework.data.jpa.domain.sample.MailSender_; @@ -57,24 +57,24 @@ public class JpaSortTests { private static final @Nullable PluralAttribute NULL_PLURAL_ATTRIBUTE = null; private static final PluralAttribute[] EMPTY_PLURAL_ATTRIBUTES = new PluralAttribute[0]; - @Test(expected = IllegalArgumentException.class) // DATAJPA-12 + @Test // DATAJPA-12 public void rejectsNullAttribute() { - JpaSort.of(NULL_ATTRIBUTE); + assertThatIllegalArgumentException().isThrownBy(() -> of(NULL_ATTRIBUTE)); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-12 + @Test // DATAJPA-12 public void rejectsEmptyAttributes() { - JpaSort.of(EMPTY_ATTRIBUTES); + assertThatIllegalArgumentException().isThrownBy(() -> of(EMPTY_ATTRIBUTES)); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-12 + @Test // DATAJPA-12 public void rejectsNullPluralAttribute() { - JpaSort.of(NULL_PLURAL_ATTRIBUTE); + assertThatIllegalArgumentException().isThrownBy(() -> of(NULL_PLURAL_ATTRIBUTE)); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-12 + @Test // DATAJPA-12 public void rejectsEmptyPluralAttributes() { - JpaSort.of(EMPTY_PLURAL_ATTRIBUTES); + assertThatIllegalArgumentException().isThrownBy(() -> of(EMPTY_PLURAL_ATTRIBUTES)); } @Test // DATAJPA-12 @@ -140,14 +140,14 @@ public class JpaSortTests { .containsExactly(Order.asc("firstname"), Order.desc("mailSender.name")); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-702 + @Test // DATAJPA-702 public void rejectsNullAttributesForCombiningCriterias() { - JpaSort.of(User_.firstname).and(DESC, (Attribute[]) null); + assertThatIllegalArgumentException().isThrownBy(() -> of(User_.firstname).and(DESC, (Attribute[]) null)); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-702 + @Test // DATAJPA-702 public void rejectsNullPathsForCombiningCriterias() { - JpaSort.of(User_.firstname).and(DESC, (Path[]) null); + assertThatIllegalArgumentException().isThrownBy(() -> of(User_.firstname).and(DESC, (Path[]) null)); } @Test // DATAJPA-702 diff --git a/src/test/java/org/springframework/data/jpa/domain/support/AuditingBeanFactoryPostProcessorUnitTests.java b/src/test/java/org/springframework/data/jpa/domain/support/AuditingBeanFactoryPostProcessorUnitTests.java index 67dc8e3a9..a4432d047 100644 --- a/src/test/java/org/springframework/data/jpa/domain/support/AuditingBeanFactoryPostProcessorUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/domain/support/AuditingBeanFactoryPostProcessorUnitTests.java @@ -66,9 +66,10 @@ public class AuditingBeanFactoryPostProcessorUnitTests { assertThat(beanFactory.isBeanNameInUse(AuditingBeanFactoryPostProcessor.BEAN_CONFIGURER_ASPECT_BEAN_NAME)).isTrue(); } - @Test(expected = IllegalStateException.class) // DATAJPA-265 + @Test // DATAJPA-265 public void rejectsConfigurationWithoutSpringConfigured() { - processor.postProcessBeanFactory(new DefaultListableBeanFactory()); + assertThatIllegalStateException() + .isThrownBy(() -> processor.postProcessBeanFactory(new DefaultListableBeanFactory())); } @Test // DATAJPA-265 diff --git a/src/test/java/org/springframework/data/jpa/repository/JavaConfigUserRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/JavaConfigUserRepositoryTests.java index 2adc26e7e..a588d3f5f 100644 --- a/src/test/java/org/springframework/data/jpa/repository/JavaConfigUserRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/JavaConfigUserRepositoryTests.java @@ -21,6 +21,7 @@ import java.util.Collections; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import org.assertj.core.api.Assertions; import org.junit.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; @@ -97,12 +98,14 @@ public class JavaConfigUserRepositoryTests extends UserRepositoryTests { } } - @Test(expected = NoSuchBeanDefinitionException.class) // DATAJPA-317 + @Test // DATAJPA-317 public void doesNotPickUpJpaRepository() { - ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(JpaRepositoryConfig.class); - context.getBean("jpaRepository"); - context.close(); + try (ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(JpaRepositoryConfig.class)) { + Assertions.assertThatExceptionOfType(NoSuchBeanDefinitionException.class) + .isThrownBy(() -> context.getBean("jpaRepository")); + context.close(); + } } @Configuration diff --git a/src/test/java/org/springframework/data/jpa/repository/RepositoryWithCompositeKeyTests.java b/src/test/java/org/springframework/data/jpa/repository/RepositoryWithCompositeKeyTests.java index e0612c889..834e4131d 100644 --- a/src/test/java/org/springframework/data/jpa/repository/RepositoryWithCompositeKeyTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/RepositoryWithCompositeKeyTests.java @@ -20,12 +20,10 @@ import static org.assertj.core.api.Assertions.*; import java.util.Arrays; import java.util.List; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.jpa.domain.sample.EmbeddedIdExampleDepartment; @@ -55,8 +53,6 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class RepositoryWithCompositeKeyTests { - @Rule public ExpectedException expectedException = ExpectedException.none(); - @Autowired EmployeeRepositoryWithIdClass employeeRepositoryWithIdClass; @Autowired EmployeeRepositoryWithEmbeddedId employeeRepositoryWithEmbeddedId; @@ -116,13 +112,6 @@ public class RepositoryWithCompositeKeyTests { @Test // DATAJPA-472, DATAJPA-912 public void shouldSupportFindAllWithPageableAndEntityWithIdClass() throws Exception { - if (Package.getPackage("org.hibernate.cfg").getImplementationVersion().startsWith("4.1.")) { - - // we expect this test to fail on 4.1.x - due to a bug in hibernate - remove as soon as 4.1.x fixes the issue. - expectedException.expect(InvalidDataAccessApiUsageException.class); - expectedException.expectMessage("No supertype found"); - } - IdClassExampleDepartment dep = new IdClassExampleDepartment(); dep.setName("TestDepartment"); dep.setDepartmentId(-1); diff --git a/src/test/java/org/springframework/data/jpa/repository/RepositoryWithIdClassKeyTests.java b/src/test/java/org/springframework/data/jpa/repository/RepositoryWithIdClassKeyTests.java index bc05382f1..bedc849c7 100644 --- a/src/test/java/org/springframework/data/jpa/repository/RepositoryWithIdClassKeyTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/RepositoryWithIdClassKeyTests.java @@ -19,10 +19,9 @@ import static org.assertj.core.api.Assertions.*; import java.util.Optional; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @@ -51,8 +50,6 @@ import org.springframework.transaction.annotation.Transactional; @Transactional public class RepositoryWithIdClassKeyTests { - @Rule public ExpectedException expectedException = ExpectedException.none(); - @Autowired private SiteRepository siteRepository; @Autowired private ItemRepository itemRepository; diff --git a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java index f0fe0e1d9..95ba8df0d 100644 --- a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java @@ -271,10 +271,12 @@ public class UserRepositoryFinderTests { .isNotNull(); } - @Test(expected = InvalidDataAccessApiUsageException.class) // DATAJPA-1023, DATACMNS-959 + @Test // DATAJPA-1023, DATACMNS-959 @Transactional(propagation = Propagation.NOT_SUPPORTED) public void rejectsStreamExecutionIfNoSurroundingTransactionActive() { - userRepository.findAllByCustomQueryAndStream(); + + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) + .isThrownBy(() -> userRepository.findAllByCustomQueryAndStream()); } @Test // DATAJPA-1334 diff --git a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java index 9855fbea6..f1906c004 100644 --- a/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java @@ -363,12 +363,12 @@ public class UserRepositoryTests { /** * Tests, that persisting a relationsship without cascade attributes throws a {@code DataAccessException}. */ - @Test(expected = DataAccessException.class) + @Test public void testPreventsCascadingRolePersisting() { firstUser.addRole(new Role("USER")); - flushTestUsers(); + assertThatExceptionOfType(DataAccessException.class).isThrownBy(this::flushTestUsers); } /** @@ -447,11 +447,13 @@ public class UserRepositoryTests { assertThat(repository.findOne(userHasLastname("Beauford"))).isNotPresent(); } - @Test(expected = IncorrectResultSizeDataAccessException.class) + @Test public void throwsExceptionForUnderSpecifiedSingleEntitySpecification() { flushTestUsers(); - repository.findOne(userHasFirstnameLike("e")); + + assertThatExceptionOfType(IncorrectResultSizeDataAccessException.class) + .isThrownBy(() -> repository.findOne(userHasFirstnameLike("e"))); } @Test @@ -1698,9 +1700,10 @@ public class UserRepositoryTests { assertThat(users).hasSize(4); } - @Test(expected = InvalidDataAccessApiUsageException.class) // DATAJPA-218 + @Test // DATAJPA-218 public void findAllByNullExample() { - repository.findAll((Example) null); + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) + .isThrownBy(() -> repository.findAll((Example) null)); } @Test // DATAJPA-218 @@ -1790,7 +1793,7 @@ public class UserRepositoryTests { assertThat(users).containsOnly(firstUser); } - @Test(expected = InvalidDataAccessApiUsageException.class) // DATAJPA-218 + @Test // DATAJPA-218 public void findAllByExampleWithRegexStringMatcher() { flushTestUsers(); @@ -1799,7 +1802,7 @@ public class UserRepositoryTests { prototype.setFirstname("^Oliver$"); Example example = Example.of(prototype, matching().withStringMatcher(StringMatcher.REGEX)); - repository.findAll(example); + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class).isThrownBy(() -> repository.findAll(example)); } @Test // DATAJPA-218 @@ -1922,7 +1925,7 @@ public class UserRepositoryTests { assertThat(users.getTotalElements()).isEqualTo(100L); } - @Test(expected = InvalidDataAccessApiUsageException.class) // DATAJPA-218 + @Test // DATAJPA-218 public void findAllByExampleShouldNotAllowCycles() { flushTestUsers(); @@ -1935,10 +1938,11 @@ public class UserRepositoryTests { Example example = Example.of(user1, matching().withIgnoreCase().withIgnorePaths("age", "createdAt") .withStringMatcher(StringMatcher.STARTING).withIgnoreCase()); - repository.findAll(example, PageRequest.of(0, 10, Sort.by(DESC, "age"))); + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) + .isThrownBy(() -> repository.findAll(example, PageRequest.of(0, 10, Sort.by(DESC, "age")))); } - @Test(expected = InvalidDataAccessApiUsageException.class) // DATAJPA-218 + @Test // DATAJPA-218 public void findAllByExampleShouldNotAllowCyclesOverSeveralInstances() { flushTestUsers(); @@ -1955,7 +1959,8 @@ public class UserRepositoryTests { Example example = Example.of(user1, matching().withIgnoreCase().withIgnorePaths("age", "createdAt") .withStringMatcher(StringMatcher.STARTING).withIgnoreCase()); - repository.findAll(example, PageRequest.of(0, 10, Sort.by(DESC, "age"))); + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) + .isThrownBy(() -> repository.findAll(example, PageRequest.of(0, 10, Sort.by(DESC, "age")))); } @Test // DATAJPA-218 diff --git a/src/test/java/org/springframework/data/jpa/repository/config/AuditingBeanDefinitionParserTests.java b/src/test/java/org/springframework/data/jpa/repository/config/AuditingBeanDefinitionParserTests.java index f0b189a1e..cc3cbffc4 100644 --- a/src/test/java/org/springframework/data/jpa/repository/config/AuditingBeanDefinitionParserTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/config/AuditingBeanDefinitionParserTests.java @@ -62,12 +62,13 @@ public class AuditingBeanDefinitionParserTests { assertThat(bean).isNotNull(); } - @Test(expected = BeanDefinitionParsingException.class) // DATAJPA-367 + @Test // DATAJPA-367 public void shouldThrowBeanDefinitionParsingExceptionIfClassFromSpringAspectsJarCannotBeFound() { ShadowingClassLoader scl = new ShadowingClassLoader(getClass().getClassLoader()); scl.excludeClass(AuditingBeanDefinitionParser.AUDITING_ENTITY_LISTENER_CLASS_NAME); - loadFactoryFrom("auditing/auditing-namespace-context.xml", scl); + assertThatExceptionOfType(BeanDefinitionParsingException.class) + .isThrownBy(() -> loadFactoryFrom("auditing/auditing-namespace-context.xml", scl)); } private void assertSetDatesIsSetTo(String configFile, String value) { diff --git a/src/test/java/org/springframework/data/jpa/repository/config/CustomRepositoryFactoryConfigTests.java b/src/test/java/org/springframework/data/jpa/repository/config/CustomRepositoryFactoryConfigTests.java index be50780f0..5adb4cbed 100644 --- a/src/test/java/org/springframework/data/jpa/repository/config/CustomRepositoryFactoryConfigTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/config/CustomRepositoryFactoryConfigTests.java @@ -53,9 +53,9 @@ public class CustomRepositoryFactoryConfigTests { transactionManager.resetCount(); } - @Test(expected = UnsupportedOperationException.class) + @Test public void testCustomFactoryUsed() { - userRepository.customMethod(1); + assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(() -> userRepository.customMethod(1)); } @Test diff --git a/src/test/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigExtensionUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigExtensionUnitTests.java index 6b13432f7..7312f016d 100644 --- a/src/test/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigExtensionUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/config/JpaRepositoryConfigExtensionUnitTests.java @@ -24,12 +24,11 @@ import java.util.Collections; import javax.persistence.EntityManagerFactory; import javax.persistence.metamodel.Metamodel; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; + import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.support.DefaultListableBeanFactory; @@ -52,7 +51,6 @@ import org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcesso @RunWith(MockitoJUnitRunner.class) public class JpaRepositoryConfigExtensionUnitTests { - public @Rule ExpectedException exception = ExpectedException.none(); @Mock RepositoryConfigurationSource configSource; @Test @@ -147,7 +145,8 @@ public class JpaRepositoryConfigExtensionUnitTests { extension.registerBeansForRoot(factory, configSource); assertThat(factory.getBean(expectedBeanName)).isNotNull(); - exception.expect(NoSuchBeanDefinitionException.class); - factory.getBeanDefinition("org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#1"); + + assertThatExceptionOfType(NoSuchBeanDefinitionException.class).isThrownBy(() -> factory + .getBeanDefinition("org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#1")); } } diff --git a/src/test/java/org/springframework/data/jpa/repository/query/Jpa21UtilsTests.java b/src/test/java/org/springframework/data/jpa/repository/query/Jpa21UtilsTests.java index 7b19d978c..c9f5e0e97 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/Jpa21UtilsTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/Jpa21UtilsTests.java @@ -15,6 +15,7 @@ */ package org.springframework.data.jpa.repository.query; +import static org.assertj.core.api.Assertions.*; import static org.junit.Assume.*; import static org.springframework.data.jpa.support.EntityManagerTestUtils.*; @@ -154,13 +155,14 @@ public class Jpa21UtilsTests { assertThat(colleaguesOfColleagues).terminatesGraphWith("roles"); } - @Test(expected = Exception.class) // DATAJPA-1041, DATAJPA-1075 + @Test // DATAJPA-1041, DATAJPA-1075 public void errorsOnUnknownProperties() { assumeTrue(currentEntityManagerIsAJpa21EntityManager(em)); - Jpa21Utils.configureFetchGraphFrom(new JpaEntityGraph("name", EntityGraphType.FETCH, new String[] { "¯\\_(ツ)_/¯" }), - em.createEntityGraph(User.class)); + assertThatExceptionOfType(Exception.class).isThrownBy(() -> Jpa21Utils.configureFetchGraphFrom( + new JpaEntityGraph("name", EntityGraphType.FETCH, new String[] { "¯\\_(ツ)_/¯" }), + em.createEntityGraph(User.class))); } /** diff --git a/src/test/java/org/springframework/data/jpa/repository/query/JpaQueryExecutionUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/JpaQueryExecutionUnitTests.java index 3c0a5ba44..4f787ca4f 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/JpaQueryExecutionUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/JpaQueryExecutionUnitTests.java @@ -69,16 +69,16 @@ public class JpaQueryExecutionUnitTests { when(jpaQuery.getQueryMethod()).thenReturn(method); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsNullQuery() { - new StubQueryExecution().execute(null, accessor); + assertThatIllegalArgumentException().isThrownBy(() -> new StubQueryExecution().execute(null, accessor)); } - @Test(expected = IllegalArgumentException.class) - public void rejectsNullBinder() throws Exception { + @Test + public void rejectsNullBinder() { - new StubQueryExecution().execute(jpaQuery, null); + assertThatIllegalArgumentException().isThrownBy(() -> new StubQueryExecution().execute(jpaQuery, null)); } @Test @@ -124,7 +124,7 @@ public class JpaQueryExecutionUnitTests { @Test @SuppressWarnings({ "unchecked", "rawtypes" }) - public void allowsMethodReturnTypesForModifyingQuery() throws Exception { + public void allowsMethodReturnTypesForModifyingQuery() { when(method.getReturnType()).thenReturn((Class) void.class, (Class) int.class, (Class) Integer.class); @@ -134,11 +134,11 @@ public class JpaQueryExecutionUnitTests { } @SuppressWarnings({ "unchecked", "rawtypes" }) - @Test(expected = IllegalArgumentException.class) - public void modifyingExecutionRejectsNonIntegerOrVoidReturnType() throws Exception { + @Test + public void modifyingExecutionRejectsNonIntegerOrVoidReturnType() { when(method.getReturnType()).thenReturn((Class) Long.class); - new ModifyingExecution(method, em); + assertThatIllegalArgumentException().isThrownBy(() -> new ModifyingExecution(method, em)); } @Test // DATAJPA-124, DATAJPA-912 diff --git a/src/test/java/org/springframework/data/jpa/repository/query/JpaQueryMethodUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/JpaQueryMethodUnitTests.java index b0892dfea..8a66b2afe 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/JpaQueryMethodUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/JpaQueryMethodUnitTests.java @@ -32,8 +32,8 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.junit.MockitoJUnitRunner; + import org.springframework.core.annotation.AliasFor; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -113,17 +113,17 @@ public class JpaQueryMethodUnitTests { assertThat(method.isNativeQuery()).isFalse(); } - @Test(expected = IllegalArgumentException.class) + @Test public void preventsNullRepositoryMethod() { - new JpaQueryMethod(null, metadata, factory, extractor); + assertThatIllegalArgumentException().isThrownBy(() -> new JpaQueryMethod(null, metadata, factory, extractor)); } - @Test(expected = IllegalArgumentException.class) + @Test public void preventsNullQueryExtractor() throws Exception { Method method = UserRepository.class.getMethod("findByLastname", String.class); - new JpaQueryMethod(method, metadata, factory, null); + assertThatIllegalArgumentException().isThrownBy(() -> new JpaQueryMethod(method, metadata, factory, null)); } @Test @@ -143,28 +143,30 @@ public class JpaQueryMethodUnitTests { assertThat(method.getAnnotatedQuery()).isNotNull(); } - @Test(expected = IllegalStateException.class) + @Test public void rejectsInvalidReturntypeOnPagebleFinder() { - new JpaQueryMethod(invalidReturnType, metadata, factory, extractor); + assertThatIllegalStateException() + .isThrownBy(() -> new JpaQueryMethod(invalidReturnType, metadata, factory, extractor)); } - @Test(expected = IllegalStateException.class) + @Test public void rejectsPageableAndSortInFinderMethod() { - new JpaQueryMethod(pageableAndSort, metadata, factory, extractor); + assertThatIllegalStateException() + .isThrownBy(() -> new JpaQueryMethod(pageableAndSort, metadata, factory, extractor)); } - @Test(expected = IllegalStateException.class) + @Test public void rejectsTwoPageableParameters() { - new JpaQueryMethod(pageableTwice, metadata, factory, extractor); + assertThatIllegalStateException().isThrownBy(() -> new JpaQueryMethod(pageableTwice, metadata, factory, extractor)); } - @Test(expected = IllegalStateException.class) + @Test public void rejectsTwoSortableParameters() { - new JpaQueryMethod(sortableTwice, metadata, factory, extractor); + assertThatIllegalStateException().isThrownBy(() -> new JpaQueryMethod(sortableTwice, metadata, factory, extractor)); } @Test @@ -174,20 +176,20 @@ public class JpaQueryMethodUnitTests { assertThat(method.isModifyingQuery()).isTrue(); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsModifyingMethodWithPageable() throws Exception { Method method = InvalidRepository.class.getMethod("updateMethod", String.class, Pageable.class); - new JpaQueryMethod(method, metadata, factory, extractor); + assertThatIllegalArgumentException().isThrownBy(() -> new JpaQueryMethod(method, metadata, factory, extractor)); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsModifyingMethodWithSort() throws Exception { Method method = InvalidRepository.class.getMethod("updateMethod", String.class, Sort.class); - new JpaQueryMethod(method, metadata, factory, extractor); + assertThatIllegalArgumentException().isThrownBy(() -> new JpaQueryMethod(method, metadata, factory, extractor)); } @Test diff --git a/src/test/java/org/springframework/data/jpa/repository/query/LikeBindingUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/LikeBindingUnitTests.java index 583436354..2e5a3a366 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/LikeBindingUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/LikeBindingUnitTests.java @@ -36,29 +36,29 @@ public class LikeBindingUnitTests { assertThat(binding.prepare("value")).isEqualTo(value); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsNullName() { - new LikeParameterBinding(null, Type.CONTAINING); + assertThatIllegalArgumentException().isThrownBy(() -> new LikeParameterBinding(null, Type.CONTAINING)); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsEmptyName() { - new LikeParameterBinding("", Type.CONTAINING); + assertThatIllegalArgumentException().isThrownBy(() -> new LikeParameterBinding("", Type.CONTAINING)); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsNullType() { - new LikeParameterBinding("foo", null); + assertThatIllegalArgumentException().isThrownBy(() -> new LikeParameterBinding("foo", null)); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsInvalidType() { - new LikeParameterBinding("foo", Type.SIMPLE_PROPERTY); + assertThatIllegalArgumentException().isThrownBy(() -> new LikeParameterBinding("foo", Type.SIMPLE_PROPERTY)); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsInvalidPosition() { - new LikeParameterBinding(0, Type.CONTAINING); + assertThatIllegalArgumentException().isThrownBy(() -> new LikeParameterBinding(0, Type.CONTAINING)); } @Test diff --git a/src/test/java/org/springframework/data/jpa/repository/query/NamedQueryUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/NamedQueryUnitTests.java index eaadb8304..8d639a44e 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/NamedQueryUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/NamedQueryUnitTests.java @@ -15,6 +15,7 @@ */ package org.springframework.data.jpa.repository.query; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; @@ -30,6 +31,7 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; + import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.provider.QueryExtractor; @@ -75,14 +77,14 @@ public class NamedQueryUnitTests { when(emf.createEntityManager()).thenReturn(em); } - @Test(expected = QueryCreationException.class) + @Test public void rejectsPersistenceProviderIfIncapableOfExtractingQueriesAndPagebleBeingUsed() { when(extractor.canExtractQuery()).thenReturn(false); JpaQueryMethod queryMethod = new JpaQueryMethod(method, metadata, projectionFactory, extractor); when(em.createNamedQuery(queryMethod.getNamedCountQueryName())).thenThrow(new IllegalArgumentException()); - NamedQuery.lookupFrom(queryMethod, em); + assertThatExceptionOfType(QueryCreationException.class).isThrownBy(() -> NamedQuery.lookupFrom(queryMethod, em)); } @Test // DATAJPA-142 diff --git a/src/test/java/org/springframework/data/jpa/repository/query/ParameterBinderUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/ParameterBinderUnitTests.java index 1342dff5b..11c431ce1 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/ParameterBinderUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/ParameterBinderUnitTests.java @@ -17,6 +17,7 @@ package org.springframework.data.jpa.repository.query; import static java.util.Collections.*; import static javax.persistence.TemporalType.*; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import static org.mockito.Mockito.any; @@ -181,13 +182,12 @@ public class ParameterBinderUnitTests { verify(query).setParameter(eq(1), eq(date), eq(TemporalType.TIMESTAMP)); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-107 + @Test // DATAJPA-107 public void shouldThrowIllegalArgumentExceptionIfIsAnnotatedWithTemporalParamAndParameterTypeIsNotDate() throws Exception { Method method = SampleRepository.class.getMethod("invalidWithTemporalTypeParameter", String.class); - JpaParameters parameters = new JpaParameters(method); - ParameterBinderFactory.createBinder(parameters); + assertThatIllegalArgumentException().isThrownBy(() -> new JpaParameters(method)); } @Test // DATAJPA-461 diff --git a/src/test/java/org/springframework/data/jpa/repository/query/PartTreeJpaQueryIntegrationTests.java b/src/test/java/org/springframework/data/jpa/repository/query/PartTreeJpaQueryIntegrationTests.java index 572d8a5fc..6f13eb986 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/PartTreeJpaQueryIntegrationTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/PartTreeJpaQueryIntegrationTests.java @@ -34,10 +34,9 @@ import javax.persistence.TemporalType; import org.hibernate.Version; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; + import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; @@ -67,8 +66,6 @@ public class PartTreeJpaQueryIntegrationTests { private static String PROPERTY = "h.target." + getQueryProperty(); - @Rule public ExpectedException thrown = ExpectedException.none(); - @PersistenceContext EntityManager entityManager; PersistenceProvider provider; @@ -89,11 +86,11 @@ public class PartTreeJpaQueryIntegrationTests { } @Test - public void cannotIgnoreCaseIfNotString() throws Exception { + public void cannotIgnoreCaseIfNotString() { - thrown.expect(IllegalArgumentException.class); - thrown.expectMessage("Unable to ignore case of java.lang.Integer types, the property 'id' must reference a String"); - testIgnoreCase("findByIdIgnoringCase", 3); + assertThatIllegalArgumentException().isThrownBy(() -> testIgnoreCase("findByIdIgnoringCase", 3)) + .withMessageContaining( + "Unable to ignore case of java.lang.Integer types, the property 'id' must reference a String"); } @Test @@ -161,13 +158,12 @@ public class PartTreeJpaQueryIntegrationTests { assertThat(HibernateUtils.getHibernateQuery(getValue(query, PROPERTY))).endsWith("roles is not empty"); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-1074 + @Test // DATAJPA-1074 public void rejectsIsEmptyOnNonCollectionProperty() throws Exception { JpaQueryMethod method = getQueryMethod("findByFirstnameIsEmpty"); - AbstractJpaQuery jpaQuery = new PartTreeJpaQuery(method, entityManager); - jpaQuery.createQuery((getAccessor(method, new Object[] { "Oliver" }))); + assertThatIllegalArgumentException().isThrownBy(() -> new PartTreeJpaQuery(method, entityManager)); } @Test // DATAJPA-1182 diff --git a/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java index d480c5fce..ceebdeefa 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/QueryUtilsUnitTests.java @@ -192,11 +192,12 @@ public class QueryUtilsUnitTests { "select count(o) from Foo o where cb.id in (select b from Bar b)"); } - @Test(expected = InvalidDataAccessApiUsageException.class) // DATAJPA-148 + @Test // DATAJPA-148 public void doesNotPrefixSortsIfFunction() { Sort sort = Sort.by("sum(foo)"); - assertThat(applySorting("select p from Person p", sort, "p")).endsWith("order by sum(foo) asc"); + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) + .isThrownBy(() -> applySorting("select p from Person p", sort, "p")); } @Test // DATAJPA-377 @@ -283,11 +284,12 @@ public class QueryUtilsUnitTests { assertThat(applySorting("from mytable where ?1 is null", Sort.by("firstname"))).endsWith("order by firstname asc"); } - @Test(expected = InvalidDataAccessApiUsageException.class) // DATAJPA-965, DATAJPA-970 + @Test // DATAJPA-965, DATAJPA-970 public void doesNotAllowWhitespaceInSort() { Sort sort = Sort.by("case when foo then bar"); - applySorting("select p from Person p", sort, "p"); + assertThatExceptionOfType(InvalidDataAccessApiUsageException.class) + .isThrownBy(() -> applySorting("select p from Person p", sort, "p")); } @Test // DATAJPA-965, DATAJPA-970 diff --git a/src/test/java/org/springframework/data/jpa/repository/query/SimpleJpaQueryUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/SimpleJpaQueryUnitTests.java index 2e23ebad8..027c0d951 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/SimpleJpaQueryUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/SimpleJpaQueryUnitTests.java @@ -30,9 +30,7 @@ import javax.persistence.TypedQuery; import javax.persistence.metamodel.Metamodel; import org.junit.Before; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.Mockito; @@ -83,8 +81,6 @@ public class SimpleJpaQueryUnitTests { ProjectionFactory factory = new SpelAwareProxyProjectionFactory(); - public @Rule ExpectedException exception = ExpectedException.none(); - @Before @SuppressWarnings({ "rawtypes", "unchecked" }) public void setUp() throws SecurityException, NoSuchMethodException { @@ -154,11 +150,11 @@ public class SimpleJpaQueryUnitTests { verify(em).createNativeQuery("SELECT u FROM User u WHERE u.lastname = ?1", User.class); } - @Test(expected = InvalidJpaQueryMethodException.class) // DATAJPA-554 + @Test // DATAJPA-554 public void rejectsNativeQueryWithDynamicSort() throws Exception { Method method = SampleRepository.class.getMethod("findNativeByLastname", String.class, Sort.class); - createJpaQuery(method); + assertThatExceptionOfType(InvalidJpaQueryMethodException.class).isThrownBy(() -> createJpaQuery(method)); } @Test // DATAJPA-352 @@ -178,11 +174,9 @@ public class SimpleJpaQueryUnitTests { Method method = SampleRepository.class.getMethod("pageByAnnotatedQuery", Pageable.class); when(em.createQuery(Mockito.contains("count"))).thenThrow(IllegalArgumentException.class); - exception.expect(IllegalArgumentException.class); - exception.expectMessage("Count"); - exception.expectMessage(method.getName()); - createJpaQuery(method); + assertThatIllegalArgumentException().isThrownBy(() -> createJpaQuery(method)).withMessageContaining("Count") + .withMessageContaining(method.getName()); } @Test diff --git a/src/test/java/org/springframework/data/jpa/repository/query/StringQueryUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/query/StringQueryUnitTests.java index 1a785e512..1eb62a8e5 100644 --- a/src/test/java/org/springframework/data/jpa/repository/query/StringQueryUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/query/StringQueryUnitTests.java @@ -22,9 +22,8 @@ import java.util.List; import org.assertj.core.api.Assertions; import org.assertj.core.api.SoftAssertions; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; + import org.springframework.data.jpa.repository.query.StringQuery.InParameterBinding; import org.springframework.data.jpa.repository.query.StringQuery.LikeParameterBinding; import org.springframework.data.jpa.repository.query.StringQuery.ParameterBinding; @@ -41,8 +40,6 @@ import org.springframework.data.repository.query.parser.Part.Type; */ public class StringQueryUnitTests { - public @Rule ExpectedException exception = ExpectedException.none(); - SoftAssertions softly = new SoftAssertions(); @Test // DATAJPA-341 @@ -180,9 +177,10 @@ public class StringQueryUnitTests { new StringQuery("select u from User u where u.firstname like %:firstname or foo like :bar"); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-292, DATAJPA-362 + @Test // DATAJPA-292, DATAJPA-362 public void rejectsDifferentBindingsForRepeatedParameter() { - new StringQuery("select u from User u where u.firstname like %?1 and u.lastname like ?1%"); + assertThatIllegalArgumentException() + .isThrownBy(() -> new StringQuery("select u from User u where u.firstname like %?1 and u.lastname like ?1%")); } @Test // DATAJPA-461 @@ -281,9 +279,10 @@ public class StringQueryUnitTests { softly.assertAll(); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-362 + @Test // DATAJPA-362 public void rejectsDifferentBindingsForRepeatedParameter2() { - new StringQuery("select u from User u where u.firstname like ?1 and u.lastname like %?1"); + assertThatIllegalArgumentException() + .isThrownBy(() -> new StringQuery("select u from User u where u.firstname like ?1 and u.lastname like %?1")); } @Test // DATAJPA-712 diff --git a/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaContextIntegrationTests.java b/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaContextIntegrationTests.java index 8b75a7798..0232726f6 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaContextIntegrationTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaContextIntegrationTests.java @@ -28,9 +28,8 @@ import javax.sql.DataSource; import org.junit.Before; import org.junit.BeforeClass; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; @@ -62,7 +61,6 @@ import org.springframework.stereotype.Component; public class DefaultJpaContextIntegrationTests { static EntityManagerFactory firstEmf, secondEmf; - public @Rule ExpectedException exception = ExpectedException.none(); EntityManager firstEm, secondEm; JpaContext jpaContext; @@ -105,10 +103,8 @@ public class DefaultJpaContextIntegrationTests { @Test // DATAJPA-669 public void rejectsUnmanagedType() { - exception.expect(IllegalArgumentException.class); - exception.expectMessage(Object.class.getSimpleName()); - - jpaContext.getEntityManagerByManagedType(Object.class); + assertThatIllegalArgumentException().isThrownBy(() -> jpaContext.getEntityManagerByManagedType(Object.class)) + .withMessageContaining(Object.class.getSimpleName()); } @Test // DATAJPA-669 @@ -119,10 +115,8 @@ public class DefaultJpaContextIntegrationTests { @Test // DATAJPA-669 public void rejectsRequestForTypeManagedByMultipleEntityManagers() { - exception.expect(IllegalArgumentException.class); - exception.expectMessage(User.class.getSimpleName()); - - jpaContext.getEntityManagerByManagedType(User.class); + assertThatIllegalArgumentException().isThrownBy(() -> jpaContext.getEntityManagerByManagedType(User.class)) + .withMessageContaining(User.class.getSimpleName()); } @Test // DATAJPA-813, DATAJPA-956 diff --git a/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaContextUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaContextUnitTests.java index 00a19d03a..831c73f1c 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaContextUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaContextUnitTests.java @@ -15,6 +15,8 @@ */ package org.springframework.data.jpa.repository.support; +import static org.assertj.core.api.Assertions.*; + import java.util.Collections; import javax.persistence.EntityManager; @@ -30,13 +32,14 @@ import org.junit.Test; */ public class DefaultJpaContextUnitTests { - @Test(expected = IllegalArgumentException.class) // DATAJPA-669 + @Test // DATAJPA-669 public void rejectsNullEntityManagers() { - new DefaultJpaContext(null); + assertThatIllegalArgumentException().isThrownBy(() -> new DefaultJpaContext(null)); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-669 + @Test // DATAJPA-669 public void rejectsEmptyEntityManagers() { - new DefaultJpaContext(Collections. emptySet()); + assertThatIllegalArgumentException() + .isThrownBy(() -> new DefaultJpaContext(Collections. emptySet())); } } diff --git a/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaEntityMetadataUnitTest.java b/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaEntityMetadataUnitTest.java index 99c19077e..026402dcd 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaEntityMetadataUnitTest.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/DefaultJpaEntityMetadataUnitTest.java @@ -35,10 +35,10 @@ import org.springframework.data.jpa.repository.query.DefaultJpaEntityMetadata; */ public class DefaultJpaEntityMetadataUnitTest { - @Test(expected = IllegalArgumentException.class) + @Test @SuppressWarnings({ "rawtypes", "unchecked" }) public void rejectsNullDomainType() { - new DefaultJpaEntityMetadata(null); + assertThatIllegalArgumentException().isThrownBy(() -> new DefaultJpaEntityMetadata(null)); } @Test diff --git a/src/test/java/org/springframework/data/jpa/repository/support/DefaultTransactionDisablingIntegrationTests.java b/src/test/java/org/springframework/data/jpa/repository/support/DefaultTransactionDisablingIntegrationTests.java index 0a97ab9f0..9e274d465 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/DefaultTransactionDisablingIntegrationTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/DefaultTransactionDisablingIntegrationTests.java @@ -19,10 +19,9 @@ import static org.assertj.core.api.Assertions.*; import javax.persistence.TransactionRequiredException; -import org.junit.Rule; import org.junit.Test; -import org.junit.rules.ExpectedException; import org.junit.runner.RunWith; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.domain.PageRequest; @@ -41,8 +40,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) public abstract class DefaultTransactionDisablingIntegrationTests { - public @Rule ExpectedException exception = ExpectedException.none(); - @Autowired UserRepository repository; @Autowired DelegatingTransactionManager txManager; diff --git a/src/test/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupportUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupportUnitTests.java index ab38ff24c..5016f56fa 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupportUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/JpaEntityInformationSupportUnitTests.java @@ -53,11 +53,12 @@ public class JpaEntityInformationSupportUnitTests { assertThat(second.getEntityName()).isEqualTo("AnotherNamedUser"); } - @Test(expected = IllegalArgumentException.class) // DATAJPA-93 + @Test // DATAJPA-93 public void rejectsClassNotBeingFoundInMetamodel() { when(em.getMetamodel()).thenReturn(metaModel); - JpaEntityInformationSupport.getEntityInformation(User.class, em); + assertThatIllegalArgumentException() + .isThrownBy(() -> JpaEntityInformationSupport.getEntityInformation(User.class, em)); } static class User { diff --git a/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryBeanUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryBeanUnitTests.java index 41105e101..4041de9ab 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryBeanUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryBeanUnitTests.java @@ -87,7 +87,7 @@ public class JpaRepositoryFactoryBeanUnitTests { * @throws Exception */ @Test - public void setsUpBasicInstanceCorrectly() throws Exception { + public void setsUpBasicInstanceCorrectly() { factoryBean.setBeanFactory(beanFactory); factoryBean.afterPropertiesSet(); @@ -95,19 +95,20 @@ public class JpaRepositoryFactoryBeanUnitTests { assertThat(factoryBean.getObject()).isNotNull(); } - @Test(expected = IllegalArgumentException.class) - public void requiresListableBeanFactory() throws Exception { + @Test + public void requiresListableBeanFactory() { - factoryBean.setBeanFactory(mock(BeanFactory.class)); + assertThatIllegalArgumentException().isThrownBy(() -> factoryBean.setBeanFactory(mock(BeanFactory.class))); } /** * Assert that the factory rejects calls to {@code JpaRepositoryFactoryBean#setRepositoryInterface(Class)} with * {@literal null} or any other parameter instance not implementing {@code Repository}. */ - @Test(expected = IllegalArgumentException.class) + @Test public void preventsNullRepositoryInterface() { - new JpaRepositoryFactoryBean, Object, Long>(null); + assertThatIllegalArgumentException() + .isThrownBy(() -> new JpaRepositoryFactoryBean, Object, Long>(null)); } public interface SimpleSampleRepository extends JpaRepository { diff --git a/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryUnitTests.java index 8f396de89..4bd02107c 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/JpaRepositoryFactoryUnitTests.java @@ -119,28 +119,28 @@ public class JpaRepositoryFactoryUnitTests { } } - @Test(expected = IllegalArgumentException.class) + @Test public void handlesRuntimeExceptionsCorrectly() { SampleRepository repository = factory.getRepository(SampleRepository.class, new SampleCustomRepositoryImpl()); - repository.throwingRuntimeException(); + assertThatIllegalArgumentException().isThrownBy(repository::throwingRuntimeException); } - @Test(expected = IOException.class) - public void handlesCheckedExceptionsCorrectly() throws Exception { + @Test + public void handlesCheckedExceptionsCorrectly() { SampleRepository repository = factory.getRepository(SampleRepository.class, new SampleCustomRepositoryImpl()); - repository.throwingCheckedException(); + assertThatExceptionOfType(IOException.class).isThrownBy(repository::throwingCheckedException); } - @Test(expected = UnsupportedOperationException.class) + @Test public void createsProxyWithCustomBaseClass() { JpaRepositoryFactory factory = new CustomGenericJpaRepositoryFactory(entityManager); factory.setQueryLookupStrategyKey(Key.CREATE_IF_NOT_FOUND); UserCustomExtendedRepository repository = factory.getRepository(UserCustomExtendedRepository.class); - repository.customMethod(1); + assertThatExceptionOfType(UnsupportedOperationException.class).isThrownBy(() -> repository.customMethod(1)); } @Test // DATAJPA-710, DATACMNS-542 diff --git a/src/test/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutorUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutorUnitTests.java index 610e934cb..ede0da039 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutorUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/QuerydslJpaPredicateExecutorUnitTests.java @@ -310,8 +310,9 @@ public class QuerydslJpaPredicateExecutorUnitTests { assertThat(predicateExecutor.findOne(user.firstname.eq("batman"))).isNotPresent(); } - @Test(expected = IncorrectResultSizeDataAccessException.class) // DATAJPA-1115 + @Test // DATAJPA-1115 public void findOneWithPredicateThrowsExceptionForNonUniqueResults() { - predicateExecutor.findOne(user.emailAddress.contains("com")); + assertThatExceptionOfType(IncorrectResultSizeDataAccessException.class) + .isThrownBy(() -> predicateExecutor.findOne(user.emailAddress.contains("com"))); } } diff --git a/src/test/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepositoryTests.java b/src/test/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepositoryTests.java index fa8b1404e..85b33b1a2 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepositoryTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/QuerydslJpaRepositoryTests.java @@ -318,8 +318,9 @@ public class QuerydslJpaRepositoryTests { assertThat(repository.findOne(user.firstname.eq("batman"))).isNotPresent(); } - @Test(expected = IncorrectResultSizeDataAccessException.class) // DATAJPA-1115 + @Test // DATAJPA-1115 public void findOneWithPredicateThrowsExceptionForNonUniqueResults() { - repository.findOne(user.emailAddress.contains("com")); + assertThatExceptionOfType(IncorrectResultSizeDataAccessException.class) + .isThrownBy(() -> repository.findOne(user.emailAddress.contains("com"))); } } diff --git a/src/test/java/org/springframework/data/jpa/repository/support/QuerydslRepositorySupportTests.java b/src/test/java/org/springframework/data/jpa/repository/support/QuerydslRepositorySupportTests.java index 87b6c86e8..f94e0f89c 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/QuerydslRepositorySupportTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/QuerydslRepositorySupportTests.java @@ -94,7 +94,7 @@ public class QuerydslRepositorySupportTests { } @Test - public void deletesAllWithLastnameCorrectly() throws Exception { + public void deletesAllWithLastnameCorrectly() { long updates = repository.deleteAllWithLastname("Matthews"); assertThat(updates).isEqualTo(1L); @@ -107,11 +107,11 @@ public class QuerydslRepositorySupportTests { assertThat(result.get(0)).isEqualTo(carter); } - @Test(expected = IllegalArgumentException.class) - public void rejectsUnsetEntityManager() throws Exception { + @Test + public void rejectsUnsetEntityManager() { UserRepositoryImpl repositoryImpl = new UserRepositoryImpl(); - repositoryImpl.validate(); + assertThatIllegalArgumentException().isThrownBy(repositoryImpl::validate); } interface UserRepository { diff --git a/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java b/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java index df68272c1..e7647437c 100644 --- a/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/repository/support/SimpleJpaRepositoryUnitTests.java @@ -16,6 +16,7 @@ package org.springframework.data.jpa.repository.support; import static java.util.Collections.*; +import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; import java.util.Arrays; @@ -114,10 +115,10 @@ public class SimpleJpaRepositoryUnitTests { verify(countQuery, never()).getSingleResult(); } - @Test(expected = EmptyResultDataAccessException.class) // DATAJPA-177 + @Test // DATAJPA-177 public void throwsExceptionIfEntityToDeleteDoesNotExist() { - repo.deleteById(4711); + assertThatExceptionOfType(EmptyResultDataAccessException.class).isThrownBy(() -> repo.deleteById(4711)); } @Test // DATAJPA-689, DATAJPA-696 diff --git a/src/test/java/org/springframework/data/jpa/support/ClasspathScanningPersistenceUnitPostProcessorUnitTests.java b/src/test/java/org/springframework/data/jpa/support/ClasspathScanningPersistenceUnitPostProcessorUnitTests.java index 3cf22c6bc..d5f28be74 100644 --- a/src/test/java/org/springframework/data/jpa/support/ClasspathScanningPersistenceUnitPostProcessorUnitTests.java +++ b/src/test/java/org/springframework/data/jpa/support/ClasspathScanningPersistenceUnitPostProcessorUnitTests.java @@ -15,6 +15,7 @@ */ package org.springframework.data.jpa.support; +import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; import java.io.IOException; @@ -50,28 +51,28 @@ public class ClasspathScanningPersistenceUnitPostProcessorUnitTests { @Mock MutablePersistenceUnitInfo pui; String basePackage = getClass().getPackage().getName(); - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsNullBasePackage() { - new ClasspathScanningPersistenceUnitPostProcessor(null); + assertThatIllegalArgumentException().isThrownBy(() -> new ClasspathScanningPersistenceUnitPostProcessor(null)); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsEmptyBasePackage() { - new ClasspathScanningPersistenceUnitPostProcessor(""); + assertThatIllegalArgumentException().isThrownBy(() -> new ClasspathScanningPersistenceUnitPostProcessor("")); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsNullMappingFileNamePattern() { ClasspathScanningPersistenceUnitPostProcessor processor = new ClasspathScanningPersistenceUnitPostProcessor( basePackage); - processor.setMappingFileNamePattern(null); + assertThatIllegalArgumentException().isThrownBy(() -> processor.setMappingFileNamePattern(null)); } - @Test(expected = IllegalArgumentException.class) + @Test public void rejectsEmptyMappingFileNamePattern() { ClasspathScanningPersistenceUnitPostProcessor processor = new ClasspathScanningPersistenceUnitPostProcessor( basePackage); - processor.setMappingFileNamePattern(""); + assertThatIllegalArgumentException().isThrownBy(() -> processor.setMappingFileNamePattern("")); } @Test