diff --git a/.idea/libraries/Gradle__org_projectlombok_lombok_1_16_20.xml b/.idea/libraries/Gradle__org_projectlombok_lombok_1_16_20.xml deleted file mode 100644 index d5bf6fc..0000000 --- a/.idea/libraries/Gradle__org_projectlombok_lombok_1_16_20.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules/spring-boot-testing.iml b/.idea/modules/spring-boot-testing.iml index d059007..0cb765f 100644 --- a/.idea/modules/spring-boot-testing.iml +++ b/.idea/modules/spring-boot-testing.iml @@ -1,5 +1,5 @@ - + diff --git a/spring-boot/spring-boot-testing/README.md b/spring-boot/spring-boot-testing/README.md index 7d9c443..cc80f81 100644 --- a/spring-boot/spring-boot-testing/README.md +++ b/spring-boot/spring-boot-testing/README.md @@ -2,6 +2,7 @@ ## Blog Posts * [Structuring and Testing Modules and Layers with Spring Boot](https://reflectoring.io/testing-verticals-and-layers-spring-boot/) -* [All You Need To Know About Unit Testing with Spring Boot](https://reflectoring.io/unit-testing-spring-boot/) -* [All You Need To Know About Testing Web Controllers with Spring Boot](https://reflectoring.io/spring-boot-web-controller-test/) -* [All You Need To Know About Testing JPA Queries with Spring Boot](https://reflectoring.io/spring-boot-data-jpa-test/) +* [Unit Testing with Spring Boot](https://reflectoring.io/unit-testing-spring-boot/) +* [Testing Spring MVC Web Controllers with @WebMvcTest](https://reflectoring.io/spring-boot-web-controller-test/) +* [Testing JPA Queries with @DataJpaTest](https://reflectoring.io/spring-boot-data-jpa-test/) +* [Integration Tests with @SpringBoot](https://reflectoring.io/spring-boot-test/) diff --git a/spring-boot/spring-boot-testing/application-test.yml b/spring-boot/spring-boot-testing/application-test.yml new file mode 100644 index 0000000..a48f767 --- /dev/null +++ b/spring-boot/spring-boot-testing/application-test.yml @@ -0,0 +1,5 @@ +spring.main.allow-bean-definition-overriding: true +spring.jpa.hibernate.ddl-auto: create-drop +spring.liquibase.enabled: false +spring.flyway.enabled: false +foo: bar \ No newline at end of file diff --git a/spring-boot/spring-boot-testing/application.yml b/spring-boot/spring-boot-testing/application.yml new file mode 100644 index 0000000..440216a --- /dev/null +++ b/spring-boot/spring-boot-testing/application.yml @@ -0,0 +1,5 @@ +spring.main.allow-bean-definition-overriding: true +spring.jpa.hibernate.ddl-auto: create-drop +spring.liquibase.enabled: false +spring.flyway.enabled: false +io.reflectoring.scheduling.enabled: false \ No newline at end of file diff --git a/spring-boot/spring-boot-testing/build.gradle b/spring-boot/spring-boot-testing/build.gradle index e5f133b..4aae4fd 100644 --- a/spring-boot/spring-boot-testing/build.gradle +++ b/spring-boot/spring-boot-testing/build.gradle @@ -1,6 +1,6 @@ buildscript { ext { - springBootVersion = '2.0.2.RELEASE' + springBootVersion = '2.1.3.RELEASE' } repositories { mavenCentral() @@ -20,10 +20,10 @@ version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { + jcenter() mavenCentral() } - dependencies { compile('org.springframework.boot:spring-boot-starter-data-jpa') compile('org.springframework.boot:spring-boot-starter-web') @@ -34,6 +34,15 @@ dependencies { compileOnly('org.projectlombok:lombok') runtime('com.h2database:h2') testCompile('org.springframework.boot:spring-boot-starter-test') - testCompile 'org.junit.jupiter:junit-jupiter-engine:5.2.0' + testCompile('org.junit.jupiter:junit-jupiter:5.4.0') + testCompile('org.junit.platform:junit-platform-launcher:1.4.0') testCompile('org.mockito:mockito-junit-jupiter:2.23.0') + testCompile('de.adesso:junit-insights:1.0.0') + annotationProcessor 'org.projectlombok:lombok:1.18.6' +} + +test { + systemProperty 'de.adesso.junitinsights.enabled', 'true' + systemProperty 'junit.jupiter.extensions.autodetection.enabled', 'true' + useJUnitPlatform() } diff --git a/spring-boot/spring-boot-testing/gradle/wrapper/gradle-wrapper.jar b/spring-boot/spring-boot-testing/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..1ce6e58 Binary files /dev/null and b/spring-boot/spring-boot-testing/gradle/wrapper/gradle-wrapper.jar differ diff --git a/spring-boot/spring-boot-testing/gradle/wrapper/gradle-wrapper.properties b/spring-boot/spring-boot-testing/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..9798a6e --- /dev/null +++ b/spring-boot/spring-boot-testing/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Feb 06 12:27:20 CET 2018 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/SchedulingConfiguration.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/SchedulingConfiguration.java new file mode 100644 index 0000000..eb1f21f --- /dev/null +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/SchedulingConfiguration.java @@ -0,0 +1,14 @@ +package io.reflectoring; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.annotation.EnableScheduling; + +@Configuration +@EnableScheduling +@ConditionalOnProperty( + name = "io.reflectoring.scheduling.enabled", + havingValue = "true", + matchIfMissing = true) +public class SchedulingConfiguration { +} diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/domain/RegisterUseCase.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/domain/RegisterUseCase.java index 7337099..ae88db4 100644 --- a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/domain/RegisterUseCase.java +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/domain/RegisterUseCase.java @@ -11,8 +11,15 @@ public class RegisterUseCase { private final SaveUserPort saveUserPort; + private final SendMailPort sendMailPort; + public Long registerUser(User user, boolean sendWelcomeMail) { user.setRegistrationDate(LocalDateTime.now()); + + if(sendWelcomeMail){ + sendMailPort.sendMail("Welcome!", "Thanks for registering."); + } + return saveUserPort.saveUser(user); } diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/domain/SendMailPort.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/domain/SendMailPort.java new file mode 100644 index 0000000..7e0af25 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/domain/SendMailPort.java @@ -0,0 +1,7 @@ +package io.reflectoring.testing.domain; + +public interface SendMailPort { + + void sendMail(String subject, String text); + +} diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/mail/MailingAdapter.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/mail/MailingAdapter.java new file mode 100644 index 0000000..2f78886 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/mail/MailingAdapter.java @@ -0,0 +1,14 @@ +package io.reflectoring.testing.mail; + +import io.reflectoring.testing.domain.SendMailPort; +import org.springframework.stereotype.Component; + +@Component +public class MailingAdapter implements SendMailPort { + + @Override + public void sendMail(String subject, String text) { + // sending a mail... + } + +} diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/persistence/PersistenceAdapter.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/persistence/PersistenceAdapter.java index e568017..8361af7 100644 --- a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/persistence/PersistenceAdapter.java +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/persistence/PersistenceAdapter.java @@ -6,11 +6,14 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; @Component -@RequiredArgsConstructor public class PersistenceAdapter implements SaveUserPort { private final UserRepository userRepository; + public PersistenceAdapter(UserRepository userRepository) { + this.userRepository = userRepository; + } + @Override public Long saveUser(User user) { UserEntity userEntity = new UserEntity( @@ -19,4 +22,9 @@ public class PersistenceAdapter implements SaveUserPort { UserEntity savedUserEntity = userRepository.save(userEntity); return savedUserEntity.getId(); } + + public User loadUser(Long id) { + UserEntity userEntity = userRepository.findById(id).get(); + return new User(userEntity.getId(), userEntity.getName(), userEntity.getEmail(), userEntity.getRegistrationDate()); + } } diff --git a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/persistence/UserRepository.java b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/persistence/UserRepository.java index 2b1c652..b5a8f4e 100644 --- a/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/persistence/UserRepository.java +++ b/spring-boot/spring-boot-testing/src/main/java/io/reflectoring/testing/persistence/UserRepository.java @@ -5,7 +5,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.query.Param; -interface UserRepository extends CrudRepository { +public interface UserRepository extends CrudRepository { UserEntity findByName(String name); diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/ApplicationTests.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/ApplicationTests.java index 85bf493..ecb5f73 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/ApplicationTests.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/ApplicationTests.java @@ -6,7 +6,11 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; @ExtendWith(SpringExtension.class) -@SpringBootTest +@SpringBootTest(properties = { + "spring.jpa.hibernate.ddl-auto=create-drop", + "spring.liquibase.enabled=false", + "spring.flyway.enabled=false" +}) class ApplicationTests { @Test diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingConfigurationTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingConfigurationTest.java index ff89f18..4938e9d 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingConfigurationTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingConfigurationTest.java @@ -10,7 +10,6 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.ApplicationContext; import org.springframework.test.context.junit.jupiter.SpringExtension; -@ExtendWith(SpringExtension.class) @SpringBootTest(classes = BookingConfiguration.class) class BookingConfigurationTest { diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingIntegrationTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingIntegrationTest.java index c5d6179..f25de1b 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingIntegrationTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/BookingIntegrationTest.java @@ -14,7 +14,6 @@ import org.springframework.web.context.WebApplicationContext; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -@ExtendWith(SpringExtension.class) @SpringBootTest class BookingIntegrationTest { diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/web/BookingControllerTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/web/BookingControllerTest.java index ecb6a59..332713c 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/web/BookingControllerTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/booking/web/BookingControllerTest.java @@ -21,7 +21,6 @@ import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; -@ExtendWith(SpringExtension.class) @WebMvcTest(controllers = BookingController.class) class BookingControllerTest { diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerConfigurationTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerConfigurationTest.java index 92c2539..c1a14a8 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerConfigurationTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/CustomerConfigurationTest.java @@ -5,7 +5,6 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit.jupiter.SpringExtension; -@ExtendWith(SpringExtension.class) @SpringBootTest(classes = CustomerConfiguration.class) class CustomerConfigurationTest { diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerRepositoryTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerRepositoryTest.java index ec1e14e..15ef7bc 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerRepositoryTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/customer/data/CustomerRepositoryTest.java @@ -12,7 +12,6 @@ import org.springframework.context.ApplicationContext; import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.assertThat; -@ExtendWith(SpringExtension.class) @DataJpaTest class CustomerRepositoryTest { diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/MockBeanTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/MockBeanTest.java new file mode 100644 index 0000000..92db365 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/MockBeanTest.java @@ -0,0 +1,47 @@ +package io.reflectoring.testing; + +import java.time.LocalDateTime; + +import io.reflectoring.testing.domain.RegisterUseCase; +import io.reflectoring.testing.domain.User; +import io.reflectoring.testing.persistence.PersistenceAdapter; +import io.reflectoring.testing.persistence.UserEntity; +import io.reflectoring.testing.persistence.UserRepository; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.TestPropertySource; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + +@SpringBootTest +class MockBeanTest { + + @MockBean + private UserRepository userRepository; + + @Autowired + private RegisterUseCase registerUseCase; + + @Test + void testRegister(){ + // given + User user = new User("Zaphod", "zaphod@galaxy.net"); + boolean sendWelcomeMail = true; + + // when + when(userRepository.save(any(UserEntity.class))).thenReturn(userEntity(1L)); + Long userId = registerUseCase.registerUser(user, sendWelcomeMail); + + // then + assertThat(userId).isEqualTo(1L); + } + + private UserEntity userEntity(Long id){ + return new UserEntity(id, "Zaphod", "zaphod@galaxy.net", LocalDateTime.now()); + } +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/RegisterUseCaseIntegrationTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/RegisterUseCaseIntegrationTest.java new file mode 100644 index 0000000..7f59f4c --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/RegisterUseCaseIntegrationTest.java @@ -0,0 +1,48 @@ +package io.reflectoring.testing; + +import com.fasterxml.jackson.databind.ObjectMapper; +import io.reflectoring.testing.persistence.PersistenceAdapter; +import io.reflectoring.testing.persistence.UserEntity; +import io.reflectoring.testing.persistence.UserRepository; +import io.reflectoring.testing.web.UserResource; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.web.servlet.MockMvc; +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +@SpringBootTest(properties = { + "spring.jpa.hibernate.ddl-auto=create-drop", + "spring.liquibase.enabled=false", + "spring.flyway.enabled=false" +}) +@AutoConfigureMockMvc +public class RegisterUseCaseIntegrationTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private ObjectMapper objectMapper; + + @Autowired + private UserRepository userRepository; + + @Test + void registrationWorksThroughAllLayers() throws Exception { + UserResource user = new UserResource("Zaphod", "zaphod@galaxy.net"); + + mockMvc.perform(post("/forums/{forumId}/register", 42L) + .contentType("application/json") + .param("sendWelcomeMail", "true") + .content(objectMapper.writeValueAsString(user))) + .andExpect(status().isOk()); + + UserEntity userEntity = userRepository.findByName("Zaphod"); + assertThat(userEntity.getEmail()).isEqualTo("zaphod@galaxy.net"); + } + +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/RegisterUseCaseTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/RegisterUseCaseTest.java index 05d20e8..d463a9e 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/RegisterUseCaseTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/RegisterUseCaseTest.java @@ -2,6 +2,7 @@ package io.reflectoring.testing; import io.reflectoring.testing.domain.RegisterUseCase; import io.reflectoring.testing.domain.SaveUserPort; +import io.reflectoring.testing.domain.SendMailPort; import io.reflectoring.testing.domain.User; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -19,17 +20,20 @@ class RegisterUseCaseTest { @Mock private SaveUserPort saveUserPort; + @Mock + private SendMailPort sendMailPort; + private RegisterUseCase registerUseCase; @BeforeEach void initUseCase() { - registerUseCase = new RegisterUseCase(saveUserPort); + registerUseCase = new RegisterUseCase(saveUserPort, sendMailPort); } @Test void savedUserHasRegistrationDate() { User user = new User("zaphod", "zaphod@mail.com"); - when(saveUserPort.saveUser(any(User.class))).then(returnsFirstArg()); + when(saveUserPort.saveUser(any(User.class))).thenReturn(42L); Long userId = registerUseCase.registerUser(user, false); assertThat(userId).isNotNull(); } diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SchedulingTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SchedulingTest.java new file mode 100644 index 0000000..c20d55e --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SchedulingTest.java @@ -0,0 +1,21 @@ +package io.reflectoring.testing; + +import io.reflectoring.SchedulingConfiguration; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; +import static org.assertj.core.api.Assertions.*; + +@SpringBootTest(properties = "io.reflectoring.scheduling.enabled=false") +class SchedulingTest { + + @Autowired(required = false) + private SchedulingConfiguration schedulingConfiguration; + + @Test + void test() { + assertThat(schedulingConfiguration).isNull(); + } +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootImportTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootImportTest.java new file mode 100644 index 0000000..e6cc5cb --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootImportTest.java @@ -0,0 +1,21 @@ +package io.reflectoring.testing; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.Import; +import other.namespace.Foo; +import static org.assertj.core.api.Assertions.*; + +@SpringBootTest +@Import(other.namespace.Foo.class) +class SpringBootImportTest { + + @Autowired + Foo foo; + + @Test + void test() { + assertThat(foo).isNotNull(); + } +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootProfileTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootProfileTest.java new file mode 100644 index 0000000..ce0bf25 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootProfileTest.java @@ -0,0 +1,20 @@ +package io.reflectoring.testing; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import static org.assertj.core.api.Assertions.*; + +@SpringBootTest +@ActiveProfiles("test") +class SpringBootProfileTest { + + @Value("${foo}") + String foo; + + @Test + void test(){ + assertThat(foo).isEqualTo("bar"); + } +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootPropertiesTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootPropertiesTest.java new file mode 100644 index 0000000..bb95d3c --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootPropertiesTest.java @@ -0,0 +1,18 @@ +package io.reflectoring.testing; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest(properties = "foo=bar") +class SpringBootPropertiesTest { + + @Value("${foo}") + String foo; + + @Test + void test(){ + assertThat(foo).isEqualTo("bar"); + } +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootPropertySourceTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootPropertySourceTest.java new file mode 100644 index 0000000..6d122e7 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/SpringBootPropertySourceTest.java @@ -0,0 +1,20 @@ +package io.reflectoring.testing; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; +import static org.assertj.core.api.Assertions.*; + +@SpringBootTest +@TestPropertySource(locations = "/foo.properties") +class SpringBootPropertySourceTest { + + @Value("${foo}") + String foo; + + @Test + void test(){ + assertThat(foo).isEqualTo("bar"); + } +} diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/FlywayTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/FlywayTest.java index bedacde..ef0b1d5 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/FlywayTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/FlywayTest.java @@ -7,7 +7,6 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; -@ExtendWith(SpringExtension.class) @DataJpaTest @TestPropertySource(properties = { "spring.jpa.hibernate.ddl-auto=validate", diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/HibernateTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/HibernateTest.java index b1ffd07..a51c66b 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/HibernateTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/HibernateTest.java @@ -12,7 +12,6 @@ import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Assertions.*; -@ExtendWith(SpringExtension.class) @DataJpaTest @TestPropertySource(properties = { "spring.jpa.hibernate.ddl-auto=create-drop", diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/LiquibaseTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/LiquibaseTest.java index 1958ded..e8e5071 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/LiquibaseTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/LiquibaseTest.java @@ -6,7 +6,6 @@ import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.junit.jupiter.SpringExtension; -@ExtendWith(SpringExtension.class) @DataJpaTest @TestPropertySource(properties = { "spring.jpa.hibernate.ddl-auto=validate", diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/SpringDbUnitTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/SpringDbUnitTest.java index 1fab9f9..83e1dd1 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/SpringDbUnitTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/SpringDbUnitTest.java @@ -15,7 +15,6 @@ import org.springframework.test.context.support.DependencyInjectionTestExecution import org.springframework.test.context.support.DirtiesContextTestExecutionListener; import static org.assertj.core.api.Java6Assertions.*; -@ExtendWith(SpringExtension.class) @DataJpaTest @TestPropertySource(properties = { "spring.jpa.hibernate.ddl-auto=create-drop", diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/SqlTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/SqlTest.java index 8e17c71..834e5d4 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/SqlTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/persistence/SqlTest.java @@ -9,7 +9,6 @@ import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.assertj.core.api.Java6Assertions.*; -@ExtendWith(SpringExtension.class) @DataJpaTest @TestPropertySource(properties = { "spring.jpa.hibernate.ddl-auto=create-drop", diff --git a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/web/RegisterRestControllerTest.java b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/web/RegisterRestControllerTest.java index 1b2cef3..f7006ca 100644 --- a/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/web/RegisterRestControllerTest.java +++ b/spring-boot/spring-boot-testing/src/test/java/io/reflectoring/testing/web/RegisterRestControllerTest.java @@ -18,7 +18,6 @@ import static org.mockito.Mockito.*; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; -@ExtendWith(SpringExtension.class) @WebMvcTest(controllers = RegisterRestController.class) class RegisterRestControllerTest { @@ -37,6 +36,8 @@ class RegisterRestControllerTest { UserResource user = new UserResource("Zaphod", "zaphod@galaxy.net"); mockMvc.perform(post("/forums/42/register") + .param("sendWelcomeMail", "true") + .content(objectMapper.writeValueAsString(user)) .contentType("application/json")) .andExpect(status().isOk()); diff --git a/spring-boot/spring-boot-testing/src/test/java/other/namespace/Foo.java b/spring-boot/spring-boot-testing/src/test/java/other/namespace/Foo.java new file mode 100644 index 0000000..b21f131 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/java/other/namespace/Foo.java @@ -0,0 +1,7 @@ +package other.namespace; + +import org.springframework.stereotype.Component; + +@Component +public class Foo { +} diff --git a/spring-boot/spring-boot-testing/src/test/resources/foo.properties b/spring-boot/spring-boot-testing/src/test/resources/foo.properties new file mode 100644 index 0000000..c9f0304 --- /dev/null +++ b/spring-boot/spring-boot-testing/src/test/resources/foo.properties @@ -0,0 +1 @@ +foo=bar \ No newline at end of file