我正在尝试对我看起来类似的Service类进行单元测试:
@Service
public class SomeQueryService {
private final SomeRepository repository;
public SomeQueryService(SomeRepository repository) {
this.repository = repository;
}
public void doSomething() {
// code doing some magic
}
}
SomeRepository
是扩展JpaRepository
接口的简单存储库接口。
我想要做的是对此服务进行单元测试以验证它是否正常工作。
我不想使用mockito来模拟存储库行为,我希望有一些模拟数据库行为的内存实现(在列表或映射上)。
Spring是否提供了这样的虚假实现?
我想避免自己做Stub实现这样的存储库,因为我将在许多其他地方使用这样的测试。
答案 0 :(得分:0)
您所指的测试类型称为“集成测试”或“端到端测试”,因为与仅测试一种方法的单元测试相比,它测试整个应用程序或其中的大部分。
https://www.guru99.com/unit-test-vs-integration-test.html
您不应对您的存储库进行单元测试,因为它们已经过春季团队的良好测试。
<强>解决方案:强>
您可以使用Spring Boot创建一个启动整个spring容器的测试:
只需在测试文件夹中创建一个类,然后使用:
进行注释@RunWith(SpringRunner.class)
@SpringBootTest
public class MyTestClass {
@Test
public void test() {
}
}
然后,您可以使用H2配置嵌入式数据库,以便您的测试不使用生产数据库,只需按照Spring Boot Database Initialization文档进行操作即可。
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html
PS。您还可以在测试类上使用以下注释创建特定的配置文件:
@ActiveProfiles("test")
答案 1 :(得分:0)
没有Spring Data不提供该接口的虚假实现。
您必须自己创建或使用像Mockito这样的模拟框架。