无法在单元测试(多模块Maven项目)中自动连线存储库

时间:2018-08-08 06:01:40

标签: spring-boot junit

我现在正在从事Spring Boot项目。 我想在扩展JpaRepository的接口内测试自定义查询。这是我可以想到的代码:

@RunWith(SpringRunner.class)
@DataJpaTest
@AutoConfigureTestDatabase
public class CffRepositoryTest {

    @Autowired
    private TestEntityManager entityManager;
    @Autowired
    private CffRepository cffRepository;

    @Test
    public void saveCffTest() {

    }
}

问题是CffRepository不能为autowired,因为找不到其中的Bean。我认为这是因为CffRepository与MainApplication位于不同的模块中。这是我的项目结构:

Project structure

有人可以帮助我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

正如您提到的,问题是您没有在类路径中用@SpringBootApplication注释的类,因此测试不知道从何处获取Spring配置。

您可以做的一件简单的事情就是在您的/test目录中包含一个TestApplication类:

@SpringBootApplication()
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }
}

作为一个提示,您实际上不需要为生产中使用的所有功能启用自动配置。您只需使用测试所需的零件就可以摆脱困境。