在Spring Boot中使用多个相关服务时如何测试服务层

时间:2019-09-04 06:57:20

标签: java spring-boot integration-testing

我正在Spring Boot中编写一些测试。我想编写所有类型的测试。如单元测试,集成测试,组件测试,微服务测试。我该怎么办?

我写了单元测试,但是我不能写其他测试。当我想编写集成测试时,我遇到了一些问题。依赖注入的问题。我有一个服务类,该服务类包含多个依赖项(其他服务,这些其他服务包含其他服务,依此类推)。如何测试服务层?我需要模拟还是使用真正的bean?

1 个答案:

答案 0 :(得分:0)

如果要进行单元测试,则需要模拟要测试的类范围之外的任何依赖关系。 对于集成测试,您需要自动关联依赖关系并创建要测试的服务。 假设您要测试需要存储库类才能运行的服务类,可以通过这种方式进行 这是您要测试的服务,具体取决于存储库

@Service
public class SomeService {
public final SomeRepository someRepository
public SomeService(SomeRepository someRepository){
  this.someRepository = someRepository;
}
public Object someMethod (){ return someRepository.getSomething()}
}

这是您如何在集成中对其进行测试

@SpringBootTest(classes = Application.class)
public class SomeServiceTest(){
  @Autowired
  SomeRepository someRepository;

  SomeService someService;

 @Before
public void setup(){
  someService = new SomeService(someRepository);
}

@Test
public void someMethodTest(){

 Assert.assertTrue(someService.someMethod().equals(anObject))
}
}