Java 如何在我的所有集成测试文件上执行beforeach

Java 如何在我的所有集成测试文件上执行beforeach,java,spring,spring-boot,junit,integration-testing,Java,Spring,Spring Boot,Junit,Integration Testing,在我的所有集成测试文件之前,我想在每个@before中运行一些代码。基本上,我需要添加的代码如下: @MockBean RequestInterceptor interceptor; // I NEED THIS @BeforeEach public void initTest() throws Exception { Mockito.when(interceptor.preHandle(any(), any(), any())).thenReturn(true); // AND TH

在我的所有集成测试文件之前,我想在每个@before中运行一些代码。基本上,我需要添加的代码如下:

@MockBean
RequestInterceptor interceptor; // I NEED THIS

@BeforeEach
public void initTest() throws Exception {
    Mockito.when(interceptor.preHandle(any(), any(), any())).thenReturn(true); // AND THIS
}

有没有办法避免在每个文件中重复此部分?也许我可以创建一个测试配置文件,并在测试文件中使用注释。由于我对java spring boot非常陌生,我希望能得到一些帮助。谢谢。

您可以创建超级类,例如BaseTest,并将此代码移到那里。然后,您的每个测试都应该扩展BaseTest。此外,您还可以在此类中设置所有注释。例如:

@AutoConfigureMockMvc
@MockitoSettings(strictness = Strictness.STRICT_STUBS)
@ExtendWith(MockitoExtension.class)
@ExtendWith(SpringExtension.class)
@ActiveProfiles("test")
@SpringBootTest
public class BaseTest {

    @MockBean
    RequestInterceptor interceptor; // I NEED THIS

    @BeforeEach
    public void initTest() throws Exception {
        Mockito.when(interceptor.preHandle(any(), any(), any())).thenReturn(true); // AND THIS
    }
}
然后你所有的测试:

class MeasurementsServiceTest extends BaseTest {
//test methods here
}

您可以创建一个具有beforeach方法的父基类,然后在所有其他方法上继承该类

public class BaseTestClass {

    @BeforeEach
    public void setUp(){
        System.out.println("Base Test Class");
    }
}

public class InheritsFromBase extends BaseTestClass {

// here goes test code
   
}

如果我正确理解了您的问题,您可以创建一个具有beforeach方法的父基类,然后在所有其他基类上继承该类……您还可以使用JUnit5的扩展或Junit的运行程序。我必须重命名
initTest
方法,否则它将被当前的initTest覆盖在测试文件中,但在其他方面工作正常,谢谢!