我解决了类似的情况。我有一个包含两个模块的项目:
- 具有域和实用程序类的“lib”项目,
- 一个带有 spring boot 应用程序、模板、控制器等的“web”项目......
我想以 spring-boot-test 方式测试“lib”项目。
首先,在 pom.xml 中包含范围为“test”的所需依赖项(在我的情况下还有 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.autoconfigure.domain.EntityScan;
import org.springframework.boot.test.context.TestConfiguration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
@TestConfiguration
@EnableJpaRepositories(basePackages = {"my.pack.engine.storage", "my.pack.storage"})
@EntityScan(basePackages = {"my.pack.storage", "my.pack.entity"})
@EnableAutoConfiguration
public class MyTestConfiguration
{
}
这将设置 H2 数据库以测试应用程序的数据访问功能
最后,仅在我发现它有用的测试类中,我将执行配置为使用测试配置(我并不总是需要这样做,但有时它很方便):
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyTestConfiguration.class)
public class TestAClassThatNeedsSpringRepositories
{
// tests...
}