Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将模拟委托给单独的类_Java_Spring_Mockito_Junit5_Spring Boot Test - Fatal编程技术网

Java 将模拟委托给单独的类

Java 将模拟委托给单独的类,java,spring,mockito,junit5,spring-boot-test,Java,Spring,Mockito,Junit5,Spring Boot Test,而不是这样: @ExtendWith(SpringExtension.class) @SpringBootTest(classes = {Application.class}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) public abstract class AbstractIT { @MockBean private FooAdapter fooAdapter; @MockBean

而不是这样:

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = {Application.class}, webEnvironment = 
SpringBootTest.WebEnvironment.DEFINED_PORT)
public abstract class AbstractIT {

   @MockBean
   private FooAdapter fooAdapter;

   @MockBean
   private BarAdapter barAdapter;

   public void mockFoo() {
      FooResponse dto = new FooResponse();
      when(fooAdapter.fooRequest()).thenReturn(dto);
   }
我想要:

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = {Application.class}, webEnvironment = 
SpringBootTest.WebEnvironment.DEFINED_PORT)
public abstract class AbstractIT {

   @MockBean/Autowired?
   MockProvider mockProvider;


class MockProvider {

   @MockBean
   private FooAdapter fooAdapter;

   @MockBean
   private BarAdapter barAdapter;

   public void mockFoo() {
      FooResponse dto = new FooResponse();
      when(fooAdapter.fooRequest()).thenReturn(dto);
   }

然而,我不知道使用Mockito和
SpringRunner
是否可能。因为我们有很多适配器(比如10个),我不想太多地污染
AbstractIT
,因此,我想将这些依赖项的初始化和具体模拟委托给另一个类来处理。

您必须在
@ContextConfiguration
中为每个要使用它的测试指定该提供程序类:

@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = {Application.class}, webEnvironment = WebEnvironment.DEFINED_PORT)
@ContextConfiguration(classes = {MockProvider.class}  // <-- this
public abstract class AbstractIT {
根据@MockBean文档:

注释可以直接用于测试类中的字段 您的测试,或在@Configuration类和字段上

@Configuration
public class MockProvider {