Java 在spring boot中使用多个依赖服务时,如何测试服务层

Java 在spring boot中使用多个依赖服务时,如何测试服务层,java,spring-boot,integration-testing,Java,Spring Boot,Integration Testing,我正在用SpringBoot编写一些测试。我想写所有类型的测试。例如单元测试、集成测试、组件测试、微服务测试。我怎么做 我编写了单元测试,但我不能编写其他测试。当我想编写集成测试时,我遇到了一些问题。依赖注入的问题。我有一个服务类,服务类包含多个dependenciesOther服务,这些其他服务包含其他服务等等。如何测试服务层?我需要模拟还是使用真正的bean?如果您正在进行单元测试,那么您需要模拟您正在测试的类范围之外的任何依赖项。 对于集成测试,您需要自动关联依赖项并创建正在测试的服务。

我正在用SpringBoot编写一些测试。我想写所有类型的测试。例如单元测试、集成测试、组件测试、微服务测试。我怎么做


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

如果您正在进行单元测试,那么您需要模拟您正在测试的类范围之外的任何依赖项。 对于集成测试,您需要自动关联依赖项并创建正在测试的服务。 假设您想测试需要存储库类运行的服务类,您可以这样做 这是您要测试的依赖于存储库的服务

@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))
}
}

如果某个服务中会有另一个服务,我是否应该创建另一个服务的实例并将其注入到某个服务类中,对吗?如果某个服务依赖于另一个服务,你可以用我理解的相同方法来做,我会尝试。谢谢。如果有帮助的话,我会做的