java - 如果 junit 5 测试失败,Pact 不会将提供者验证结果发送给 Pact 代理
问题描述
我用spring创建了一个REST服务。现在我想使用 pact 和 junit 5 来测试消费者-提供者-通信。我已经有一个正在运行的 pact-broker(来自https://github.com/jaimeniswonger/pact-broker-openshift)。消费者测试工作正常并发布协议。provider-test 加载这些并尝试验证它们。但测试只有在验证成功的情况下才会上传结果。我尝试使用surefire和failsafe运行测试。
测试代码:
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT, properties = "server.port=12223")
@Provider("Provider")
@PactBroker
public class ProviderPactTest {
@BeforeEach
void setupTestTarget(PactVerificationContext context) {
context.setTarget((new HttpsTestTarget("localhost", 12223, "/", true)));
}
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void pactVerificationTestTemplate(PactVerificationContext context) {
context.verifyInteraction();
}
@State({ "state1" })
public void doNothing() {
}
}
协议代理属性在 pom 中定义:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<systemPropertyVariables>
<pact.provider.version>${project.version}</pact.provider.version>
<pact.verifier.publishResults>true</pact.verifier.publishResults>
<pact.verification.reports>json</pact.verification.reports>
<pactbroker.tags>TAG</pactbroker.tags>
<pactbroker.host>pact-broker.url.com</pactbroker.host>
<pactbroker.port>80</pactbroker.port>
</systemPropertyVariables>
</configuration>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>${junit-platform.version}</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${junit.version}</version>
</dependency>
</dependencies>
</plugin>
是否可以配置测试以通知协议代理验证失败?
解决方案
这似乎是一个缺陷。您能否在https://github.com/dius/pact-jvm存储库中提出它?
推荐阅读
- php - codeigniter中非对象的未定义变量和属性
- grails - 如何删除 grails 中的 spring 安全令牌?
- javascript - 为什么在 JavaScript 中没有提升条件时起作用?
- swagger - Swagger 如何对休息方法进行分组(API 文档)
- python - 在命名管道中获取分段错误(核心转储)错误
- javascript - 在html中创建可点击列表
- scala - 如何从具有特定项目的交叉构建的 sbt 多项目中删除 scala 版本
- selenium - 硒中的模态弹出处理
- angular - 错误类型错误:无法读取未定义的属性“值”:Angular 6
- javascript - 如何将数字转换为印度货币格式的单词