Spring boot 使用jUnit5和SpringBoot的随机端口进行Pact测试
当使用jUnit5时,我无法在8080以外的任何端口上运行pact提供程序测试。我有以下代码:Spring boot 使用jUnit5和SpringBoot的随机端口进行Pact测试,spring-boot,testing,junit5,pact,Spring Boot,Testing,Junit5,Pact,当使用jUnit5时,我无法在8080以外的任何端口上运行pact提供程序测试。我有以下代码: @ExtendWith(SpringExtension.class) @Provider(PROVIDER) @PactFolder("pacts") @SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) public class PactProviderTest { @LocalServerPort private int s
@ExtendWith(SpringExtension.class)
@Provider(PROVIDER)
@PactFolder("pacts")
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class PactProviderTest {
@LocalServerPort private int serverPort;
@Autowired Result<IServiceManagementFacade2> serviceManagementFacade;
@Autowired private RestServiceFactory restServiceFactory;
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.setTarget(new HttpTestTarget("localhost", serverPort));
context.verifyInteraction();
}
如果我改变
@SpringBootTest(webEnvironment=webEnvironment.RANDOM\u端口)
到
@SpringBootTest(webEnvironment=webEnvironment.DEFINED\u端口)
测试通过了。但是,在测试期间,不能在该端口上运行在测试环境中不可接受的其他应用程序。有什么办法可以解决这个问题吗?我设法解决了
移动线路:
setTarget(新的HttpTestTarget(“localhost”,serverPort))
在每个人都解决了问题之前。它不起作用的原因是我之前尝试过这样做,因为我使用了一个变量来设置它
这样做:
@LocalServerPort private int serverPort;
private HttpTestTarget target = new HttpTestTarget("localhost", serverPort);
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@BeforeEach
void setTarget(PactVerificationContext context) {
context.setTarget(target);
}
不起作用
但是,这确实有效:
@LocalServerPort private int serverPort;
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@BeforeEach
void setTarget(PactVerificationContext context) {
context.setTarget(new HttpTestTarget("localhost", serverPort));
}
我设法解决了它
移动线路:
setTarget(新的HttpTestTarget(“localhost”,serverPort))
在每个人都解决了问题之前。它不起作用的原因是我之前尝试过这样做,因为我使用了一个变量来设置它
这样做:
@LocalServerPort private int serverPort;
private HttpTestTarget target = new HttpTestTarget("localhost", serverPort);
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@BeforeEach
void setTarget(PactVerificationContext context) {
context.setTarget(target);
}
不起作用
但是,这确实有效:
@LocalServerPort private int serverPort;
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@BeforeEach
void setTarget(PactVerificationContext context) {
context.setTarget(new HttpTestTarget("localhost", serverPort));
}
我遵循相同但获取状态不匹配错误预期状态为201但为404我遵循相同但获取状态不匹配错误预期状态为201但为404