From 05d08b1f3efdfe2f3a5aa960132cffcb4d6bf6e8 Mon Sep 17 00:00:00 2001 From: ydvorzhetskiy Date: Sat, 23 Mar 2019 00:27:03 +0300 Subject: [PATCH] unit-testing-spring-boot --- README.md | 3 +- unit-testing-spring-boot/.gitignore | 25 ++++++ unit-testing-spring-boot/pom.xml | 84 +++++++++++++++++++ .../TestingExampleSpringBootApplication.java | 17 ++++ .../config/ApplicationConfig.java | 16 ++++ .../config/ApplicationProperties.java | 12 +++ .../otus/testingExample/dao/GreetingDao.java | 7 ++ .../testingExample/dao/GreetingDaoImpl.java | 38 +++++++++ .../dao/InitialDataLoadingException.java | 7 ++ .../services/ConsoleIOService.java | 11 +++ .../testingExample/services/CountryCodes.java | 7 ++ .../services/GreetingNotFoundException.java | 8 ++ .../services/GreetingService.java | 7 ++ .../services/GreetingServiceImpl.java | 32 +++++++ .../testingExample/services/IOService.java | 5 ++ .../src/main/resources/application.yml | 1 + .../initial_data/greetings.properties | 3 + .../springboot/dao/GreetingDaoImplTest.java | 42 ++++++++++ .../springboot/dao/TestContextConfig.java | 15 ++++ .../services/GreetingServiceImplTest.java | 84 +++++++++++++++++++ .../services/TestContextConfig.java | 15 ++++ .../src/test/resources/application.yml | 1 + .../initial_data/greetings.properties | 3 + 23 files changed, 442 insertions(+), 1 deletion(-) create mode 100644 unit-testing-spring-boot/.gitignore create mode 100644 unit-testing-spring-boot/pom.xml create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/TestingExampleSpringBootApplication.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/config/ApplicationConfig.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/config/ApplicationProperties.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/GreetingDao.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/GreetingDaoImpl.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/InitialDataLoadingException.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/ConsoleIOService.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/CountryCodes.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingNotFoundException.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingService.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingServiceImpl.java create mode 100644 unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/IOService.java create mode 100644 unit-testing-spring-boot/src/main/resources/application.yml create mode 100644 unit-testing-spring-boot/src/main/resources/initial_data/greetings.properties create mode 100644 unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/dao/GreetingDaoImplTest.java create mode 100644 unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/dao/TestContextConfig.java create mode 100644 unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/services/GreetingServiceImplTest.java create mode 100644 unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/services/TestContextConfig.java create mode 100644 unit-testing-spring-boot/src/test/resources/application.yml create mode 100644 unit-testing-spring-boot/src/test/resources/initial_data/greetings.properties diff --git a/README.md b/README.md index 43886753..9581a13a 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,5 @@ ## -* *unit-testing-plain-spring* - Spring \ No newline at end of file +* *unit-testing-plain-spring* - Spring +* *unit-testing-spring-boot* - , Spring Boot \ No newline at end of file diff --git a/unit-testing-spring-boot/.gitignore b/unit-testing-spring-boot/.gitignore new file mode 100644 index 00000000..c456c4a3 --- /dev/null +++ b/unit-testing-spring-boot/.gitignore @@ -0,0 +1,25 @@ +/target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ diff --git a/unit-testing-spring-boot/pom.xml b/unit-testing-spring-boot/pom.xml new file mode 100644 index 00000000..3c41c6c8 --- /dev/null +++ b/unit-testing-spring-boot/pom.xml @@ -0,0 +1,84 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.3.RELEASE + + + + ru.otus + unit-testing-spring-boot + 0.0.1-SNAPSHOT + unit-testing-spring-boot + Unit testing example + + + 1.8 + + + + + org.projectlombok + lombok + true + + + + + org.springframework.boot + spring-boot-starter + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.junit + junit + + + + + + + org.junit.jupiter + junit-jupiter-api + ${junit-jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit-jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-params + ${junit-jupiter.version} + test + + + org.mockito + mockito-junit-jupiter + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/TestingExampleSpringBootApplication.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/TestingExampleSpringBootApplication.java new file mode 100644 index 00000000..221e7d5c --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/TestingExampleSpringBootApplication.java @@ -0,0 +1,17 @@ +package ru.otus.testingExample; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.ConfigurableApplicationContext; +import ru.otus.testingExample.services.GreetingService; + +@SpringBootApplication +public class TestingExampleSpringBootApplication { + + public static void main(String[] args) { + ConfigurableApplicationContext context = SpringApplication.run(TestingExampleSpringBootApplication.class, args); + GreetingService greetingService = context.getBean(GreetingService.class); + greetingService.sayChinaGreeting(); + } + +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/config/ApplicationConfig.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/config/ApplicationConfig.java new file mode 100644 index 00000000..07fd115a --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/config/ApplicationConfig.java @@ -0,0 +1,16 @@ +package ru.otus.testingExample.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import ru.otus.testingExample.dao.GreetingDao; +import ru.otus.testingExample.dao.GreetingDaoImpl; + +@Configuration +public class ApplicationConfig { + + @Bean + GreetingDao greetingDao(ApplicationProperties properties) { + return new GreetingDaoImpl(properties.getInitialData()); + } + +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/config/ApplicationProperties.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/config/ApplicationProperties.java new file mode 100644 index 00000000..feafe177 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/config/ApplicationProperties.java @@ -0,0 +1,12 @@ +package ru.otus.testingExample.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@Data +@Component +@ConfigurationProperties +public class ApplicationProperties { + private String initialData; +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/GreetingDao.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/GreetingDao.java new file mode 100644 index 00000000..d7d4b204 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/GreetingDao.java @@ -0,0 +1,7 @@ +package ru.otus.testingExample.dao; + +import java.util.Optional; + +public interface GreetingDao { + Optional findGreetingByCountryCode(String countryCode); +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/GreetingDaoImpl.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/GreetingDaoImpl.java new file mode 100644 index 00000000..6be506e6 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/GreetingDaoImpl.java @@ -0,0 +1,38 @@ +package ru.otus.testingExample.dao; + + +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.*; + +public class GreetingDaoImpl implements GreetingDao { + + private final String initialDataPropertiesResourceName; + private final Map greetingsByCountryCode; + + public GreetingDaoImpl(String initialDataPropertiesResourceName) { + this.initialDataPropertiesResourceName = initialDataPropertiesResourceName; + greetingsByCountryCode = new HashMap<>(); + loadInitialData(); + } + + private void loadInitialData() { + greetingsByCountryCode.clear(); + + try { + try (InputStream initialDataPropertiesResourceStream = getClass().getClassLoader().getResourceAsStream(initialDataPropertiesResourceName)) { + Properties properties = new Properties(); + properties.load(new InputStreamReader(Objects.requireNonNull(initialDataPropertiesResourceStream), "UTF-8")); + properties.forEach((key, value) -> greetingsByCountryCode.putIfAbsent(((String) key).toUpperCase(), (String) value)); + } + }catch (Exception e) { + throw new InitialDataLoadingException(e); + } + + } + + + public Optional findGreetingByCountryCode(String countryCode) { + return Optional.ofNullable(greetingsByCountryCode.get(countryCode.toUpperCase())); + } +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/InitialDataLoadingException.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/InitialDataLoadingException.java new file mode 100644 index 00000000..086129f8 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/dao/InitialDataLoadingException.java @@ -0,0 +1,7 @@ +package ru.otus.testingExample.dao; + +public class InitialDataLoadingException extends RuntimeException { + public InitialDataLoadingException(Throwable cause) { + super(cause); + } +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/ConsoleIOService.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/ConsoleIOService.java new file mode 100644 index 00000000..c9ba8fe6 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/ConsoleIOService.java @@ -0,0 +1,11 @@ +package ru.otus.testingExample.services; + +import org.springframework.stereotype.Service; + +@Service +public class ConsoleIOService implements IOService { + @Override + public void out(String message) { + System.out.println(message); + } +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/CountryCodes.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/CountryCodes.java new file mode 100644 index 00000000..f124d070 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/CountryCodes.java @@ -0,0 +1,7 @@ +package ru.otus.testingExample.services; + +public class CountryCodes { + public static final String COUNTRY_CODE_RU = "RU"; + public static final String COUNTRY_CODE_EN = "EN"; + public static final String COUNTRY_CODE_CN = "CN"; +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingNotFoundException.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingNotFoundException.java new file mode 100644 index 00000000..77def412 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingNotFoundException.java @@ -0,0 +1,8 @@ +package ru.otus.testingExample.services; + +public class GreetingNotFoundException extends RuntimeException { + public GreetingNotFoundException(String countryCode) { + super(String.format("No greeting was found for country code %s", countryCode)); + + } +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingService.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingService.java new file mode 100644 index 00000000..623f15c0 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingService.java @@ -0,0 +1,7 @@ +package ru.otus.testingExample.services; + +public interface GreetingService { + void sayRussianGreeting(); + void sayEnglishGreeting(); + void sayChinaGreeting(); +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingServiceImpl.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingServiceImpl.java new file mode 100644 index 00000000..b5d8c1ef --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/GreetingServiceImpl.java @@ -0,0 +1,32 @@ +package ru.otus.testingExample.services; + +import org.springframework.stereotype.Service; +import ru.otus.testingExample.dao.GreetingDao; + +import static ru.otus.testingExample.services.CountryCodes.*; + +@Service +public class GreetingServiceImpl implements GreetingService { + private final IOService ioService; + private final GreetingDao greetingDao; + + public GreetingServiceImpl(IOService ioService, GreetingDao greetingDao) { + this.ioService = ioService; + this.greetingDao = greetingDao; + } + + @Override + public void sayRussianGreeting() { + ioService.out(greetingDao.findGreetingByCountryCode(COUNTRY_CODE_RU).orElseThrow(() -> new GreetingNotFoundException(COUNTRY_CODE_RU))); + } + + @Override + public void sayEnglishGreeting() { + ioService.out(greetingDao.findGreetingByCountryCode(COUNTRY_CODE_EN).orElseThrow(() -> new GreetingNotFoundException(COUNTRY_CODE_EN))); + } + + @Override + public void sayChinaGreeting() { + ioService.out(greetingDao.findGreetingByCountryCode(COUNTRY_CODE_CN).orElseThrow(() -> new GreetingNotFoundException(COUNTRY_CODE_CN))); + } +} diff --git a/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/IOService.java b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/IOService.java new file mode 100644 index 00000000..19fcadc3 --- /dev/null +++ b/unit-testing-spring-boot/src/main/java/ru/otus/testingExample/services/IOService.java @@ -0,0 +1,5 @@ +package ru.otus.testingExample.services; + +public interface IOService { + void out(String message); +} diff --git a/unit-testing-spring-boot/src/main/resources/application.yml b/unit-testing-spring-boot/src/main/resources/application.yml new file mode 100644 index 00000000..32bca736 --- /dev/null +++ b/unit-testing-spring-boot/src/main/resources/application.yml @@ -0,0 +1 @@ +initialData: "initial_data/greetings.properties" \ No newline at end of file diff --git a/unit-testing-spring-boot/src/main/resources/initial_data/greetings.properties b/unit-testing-spring-boot/src/main/resources/initial_data/greetings.properties new file mode 100644 index 00000000..f46f8a07 --- /dev/null +++ b/unit-testing-spring-boot/src/main/resources/initial_data/greetings.properties @@ -0,0 +1,3 @@ +RU=Привет +EN=Hello +CN=Nihao \ No newline at end of file diff --git a/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/dao/GreetingDaoImplTest.java b/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/dao/GreetingDaoImplTest.java new file mode 100644 index 00000000..10fb1be6 --- /dev/null +++ b/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/dao/GreetingDaoImplTest.java @@ -0,0 +1,42 @@ +package ru.otus.testingExample.springboot.dao; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import ru.otus.testingExample.dao.GreetingDao; + +import java.util.Optional; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; + +// Тест с поднятием контекста spring boot +@DisplayName("Дао для работы с приветствиями ") +@SpringBootTest +class GreetingDaoImplTest { + + @Autowired + private GreetingDao greetingDao; + + @ParameterizedTest + @MethodSource("generateData") + @DisplayName("дожен возвращать не пустое, корректное приветствие для кода указанной страны в любом регистре") + void shouldReturnNotEmptyGreetingByCaseInsensitiveCountryCode(String countryCode, String expectedGreeting) { + Optional greetingOptional = greetingDao.findGreetingByCountryCode(countryCode); + assertThat(greetingOptional).isNotEmpty().hasValue(expectedGreeting); + } + + private static Stream generateData() { + return Stream.of( + Arguments.of("ru", "Тестовый привет"), + Arguments.of("RU", "Тестовый привет"), + Arguments.of("en", "Тестовый hello"), + Arguments.of("EN", "Тестовый hello"), + Arguments.of("cn", "Тестовый nihao"), + Arguments.of("CN", "Тестовый nihao") + ); + } +} \ No newline at end of file diff --git a/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/dao/TestContextConfig.java b/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/dao/TestContextConfig.java new file mode 100644 index 00000000..a11caf18 --- /dev/null +++ b/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/dao/TestContextConfig.java @@ -0,0 +1,15 @@ +package ru.otus.testingExample.springboot.dao; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.ComponentScan; + +/* + Класс ограничивающий контекст. В тесты, лежащие в одном пакете с данной конфигурацией попадут только те бины, которые лежать в пакетах, указанных в ComponentScan + Подробнее см. https://otus.ru/nest/post/429/ +*/ +@SpringBootConfiguration +@EnableConfigurationProperties +@ComponentScan({"ru.otus.testingExample.config", "ru.otus.testingExample.dao"}) +public class TestContextConfig { +} diff --git a/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/services/GreetingServiceImplTest.java b/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/services/GreetingServiceImplTest.java new file mode 100644 index 00000000..0423c382 --- /dev/null +++ b/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/services/GreetingServiceImplTest.java @@ -0,0 +1,84 @@ +package ru.otus.testingExample.springboot.services; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import ru.otus.testingExample.dao.GreetingDao; +import ru.otus.testingExample.services.GreetingNotFoundException; +import ru.otus.testingExample.services.GreetingService; +import ru.otus.testingExample.services.GreetingServiceImpl; +import ru.otus.testingExample.services.IOService; + +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThatCode; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static ru.otus.testingExample.services.CountryCodes.*; + +// Тест с поднятием контекста spring boot +@DisplayName("Методы сервиса приветствий должны ") +@SpringBootTest(classes = GreetingServiceImpl.class) +class GreetingServiceImplTest { + + @MockBean + private IOService ioService; + + @MockBean + private GreetingDao greetingDao; + + @Autowired + private GreetingService greetingService; + + @BeforeEach + void setUp() { + given(greetingDao.findGreetingByCountryCode(any())).willReturn(Optional.of("")); + } + + @Test + @DisplayName("вызывать методы ioService и greetingDao с нужными параметрами. Текущий метод: sayRussianGreeting") + void shouldExecuteServiceMethodsForRussianGreeting() { + greetingService.sayRussianGreeting(); + verify(ioService, times(1)).out(""); + verify(greetingDao, times(1)).findGreetingByCountryCode(COUNTRY_CODE_RU); + } + + @Test + @DisplayName("вызывать методы ioService и greetingDao с нужными параметрами. Текущий метод: sayEnglishGreeting") + void shouldExecuteServiceMethodsForEnglishGreeting() { + greetingService.sayEnglishGreeting(); + verify(ioService, times(1)).out(""); + verify(greetingDao, times(1)).findGreetingByCountryCode(COUNTRY_CODE_EN); + } + + @Test + @DisplayName("вызывать методы ioService и greetingDao с нужными параметрами. Текущий метод: sayChinaGreeting") + void shouldExecuteServiceMethodsForChinaGreeting() { + greetingService.sayChinaGreeting(); + verify(ioService, times(1)).out(""); + verify(greetingDao, times(1)).findGreetingByCountryCode(COUNTRY_CODE_CN); + } + + @Test + @DisplayName(" не бросать исключение если приветствие найдено") + void shouldNotThrowExceptionIfGreetingExists() { + assertThatCode(() -> greetingService.sayChinaGreeting()).doesNotThrowAnyException(); + + } + + @Test + @DisplayName(" бросать исключение если приветствие не найдено") + void shouldThrowFoundExceptionIfGreetingNotExists() { + given(greetingDao.findGreetingByCountryCode(any())).willReturn(Optional.empty()); + assertThatThrownBy(() -> greetingService.sayChinaGreeting()).isInstanceOf(GreetingNotFoundException.class); + + } + +} \ No newline at end of file diff --git a/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/services/TestContextConfig.java b/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/services/TestContextConfig.java new file mode 100644 index 00000000..ee396743 --- /dev/null +++ b/unit-testing-spring-boot/src/test/java/ru/otus/testingExample/springboot/services/TestContextConfig.java @@ -0,0 +1,15 @@ +package ru.otus.testingExample.springboot.services; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.ComponentScan; + +/* + Класс ограничивающий контекст. В тесты, лежащие в одном пакете с данной конфигурацией попадут только те бины, которые лежать в пакетах, указанных в ComponentScan + Подробнее см. https://otus.ru/nest/post/429/ +*/ +@SpringBootConfiguration +@EnableConfigurationProperties +@ComponentScan({"ru.otus.testingExample.config", "ru.otus.testingExample.dao", "ru.otus.testingExample.services"}) +public class TestContextConfig { +} diff --git a/unit-testing-spring-boot/src/test/resources/application.yml b/unit-testing-spring-boot/src/test/resources/application.yml new file mode 100644 index 00000000..32bca736 --- /dev/null +++ b/unit-testing-spring-boot/src/test/resources/application.yml @@ -0,0 +1 @@ +initialData: "initial_data/greetings.properties" \ No newline at end of file diff --git a/unit-testing-spring-boot/src/test/resources/initial_data/greetings.properties b/unit-testing-spring-boot/src/test/resources/initial_data/greetings.properties new file mode 100644 index 00000000..4b699531 --- /dev/null +++ b/unit-testing-spring-boot/src/test/resources/initial_data/greetings.properties @@ -0,0 +1,3 @@ +RU=Тестовый привет +EN=Тестовый hello +CN=Тестовый nihao \ No newline at end of file