Я решил аналогичную ситуацию. У меня есть проект с двумя модулями:
- «Lib» проект с доменными и коммунальных классов,
- «веб» проектов с применением пружинного загрузки, шаблоны, контроллеры и т.д. ...
и я хотел протестировать проект «lib» в режиме весенней загрузки.
Прежде всего, включите необходимые зависимости с областью действия «test» в pom.XML (в моем случае есть также база данных H2):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>1.3.3.RELEASE</version>
<scope>test</scope>
</dependency>
<!-- add also add this here, even if in my project it is already present as a regular dependency -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>1.3.3.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.191</version>
<scope>test</scope>
</dependency>
Для целей тестирования, среди тестируемых источников «Lib» проекта, у меня есть класс, который действует как мой тестовой конфигурации
package my.pack.utils;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.orm.jpa.EntityScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@Configuration
@EnableJpaRepositories(basePackages = {"my.pack.engine.storage", "my.pack.storage"})
@EntityScan(basePackages = {"my.pack.storage", "my.pack.entity"})
@EnableAutoConfiguration
public class TestConfiguration
{
}
Это устанавливает базу данных H2 для проверки функциональности доступа к данным приложения
Наконец, только в классах тестирования, где я считаю это полезным, я настраиваю выполнение для использования тестовой конфигурации (я не всегда необходимо сделать это, но иногда это удобно):
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestConfiguration.class)
public class TestAClassThatNeedsSpringRepositories
{
// tests...
}
Кстати, вы по-прежнему можете включить весовые зависимости в подмодулях в тестовой области и выполнить единичный тест! – alexbt
Я не согласен, я думаю, что модульное приложение должно тестироваться модулем по модулю даже с контекстом приложения. вы можете найти проблемы с настройкой на ранней стадии и не дожидаться полных тестов приложений. – Gadi
Я понимаю, что вы имеете в виду, и я согласен с тем, что больше тестов, тем лучше! (Не имеет значения, являются ли они единицей, intg ...). Дело в том, что мы говорим о «Весенней загрузке», и большая часть конфигурации находится в application.properties, не видимой для подмодулей. Использование @SpringBootTest в подмодулях потребует определенной установки для тестов, а затем я не уверен, что вы фактически тестируете свой производственный контекст. Ваш «тестовый» контекст может очень хорошо работать, пока ваша продукция терпит неудачу. Пожалуйста, ответьте на это своими мыслями. – alexbt