【发布时间】:2015-03-23 06:47:13
【问题描述】:
我有一个多模块 Spring-Boot 项目。 我想知道如何设置集成测试来测试 Spring Data JPA 存储库?以下方法因此异常而失败: HV000183:无法加载“javax.el.ExpressionFactory”。检查类路径上是否有 EL 依赖项。
由于这个模块不依赖web模块,所以没有可以启动的web应用。
@RunWith(SpringJUnit4ClassRunner.class)
@IntegrationTest
@SpringApplicationConfiguration(classes = TestConfiguration.class)
class CardInfoRepositoryIT {
@Autowired CardInfoRepository cardInfoRepository;
@Test
void testLoadData() {
assert cardInfoRepository.findAll().size() == 1
}
}
【问题讨论】:
-
您应该在
SpringApplicationConfiguration注解中使用您的应用程序类,而不是您创建的任意配置。你真的需要@Integrationtest吗?因为这将启动您的应用程序,以便您可以使用RestTemplate或其他任何东西来测试您的应用程序。这不是您似乎正在做或需要的。 -
1) 我不能使用我的应用程序类,因为这个模块确实依赖于 web 模块(web 模块包含应用程序类)。 2) 为什么我需要 RestTemplate 来测试存储库?这不是网络或网络服务集成测试。
-
你真的了解
@IntegrationTest的作用吗?从您尝试做的事情来看,它与 Spring Boot 意义上的集成测试无关。您只是在为存储库编写单元测试,而不是集成测试。 -
尝试访问数据库并对其运行一些查询不是单元测试。
-
在我的书中这也不是集成测试,但我们可以争论很长时间。就
@IntegrationTest的用途而言,您的测试仍然不是集成测试。所以删除它,使用@SpringApplicationConfiguration也没有意义,因为你没有传递一个应用程序类,而只是一个配置。因此,它只是一个简单的基于弹簧的测试。