Java 集成测试,可根据运行位置指向WireMock和真实实例
我正在参与一个使用“SpringBoot2”的集成项目,我希望能够在本地和开发环境中针对wiremock运行集成测试。但是,当在测试环境中运行相同的测试时,我希望它们针对真正的服务而不是模拟运行。背后的想法是,wiremock有时会产生错误的安全感,通过这种方式执行它们来对抗我们现在实际工作的真实事物 我的主要问题是如何以尽可能不依赖wiremock的方式编写测试。该项目是SpringBoot2项目 例1Java 集成测试,可根据运行位置指向WireMock和真实实例,java,unit-testing,integration-testing,wiremock,spring-cloud-contract,Java,Unit Testing,Integration Testing,Wiremock,Spring Cloud Contract,我正在参与一个使用“SpringBoot2”的集成项目,我希望能够在本地和开发环境中针对wiremock运行集成测试。但是,当在测试环境中运行相同的测试时,我希望它们针对真正的服务而不是模拟运行。背后的想法是,wiremock有时会产生错误的安全感,通过这种方式执行它们来对抗我们现在实际工作的真实事物 我的主要问题是如何以尽可能不依赖wiremock的方式编写测试。该项目是SpringBoot2项目 例1 @TestConfiguration public class TestConfigura
@TestConfiguration
public class TestConfiguration {
public WireMockServie () {
// initialize wiremock
}
}
class MyIntegrationTest {
@Autowire
WiremockServer wiremock;
@Test
public void myTest() {
//stubb something
// test something
}
}
现在这个办法不太好。因为它将存根进程和wiremock公开给测试,所以不能对实际服务执行相同的测试
例2
class MyIntegrationTest {
@Autowire
private static WiremockServer wiremock;
@BeforeAll
public static setup() {
if(springProfile.equals("local") {
// initialize wiremock
// do stubbing global at a single place global for all tests inside the test class
}
}
public void teardown(){
if(springProfile.equals("local") {
// destroy wiremock
}
}
@Test
public void myTest() {
// now the test is agnostic of wiremock
}
}
与示例1相比,示例2是不可知的,可以针对实际实例运行。所有wiremock初始化都在setup方法内部静态进行
虽然示例2有效,但我觉得可能有更好的方法来实现这种行为
我的问题是: