当前位置: 首页 > 知识库问答 >
问题:

如果JUnit5测试失败,Pact不会将提供者验证结果发送给Pact broker

舒枫涟
2023-03-14

我用Spring创建了一个REST服务。现在我想使用pact和JUnit5来测试消费者-提供者-通信。我已经有一个正在运行的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() {

    }
}

pact broker属性在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>

是否可以将测试配置为通知pact-broker验证失败?

共有1个答案

邵骏喆
2023-03-14

这似乎是一个缺陷。请您在https://github.com/dius/pact-jvm存储库中提出它好吗?

 类似资料:
  • 我已经使用GitHub有一段时间了,我对,和都很好,到目前为止没有任何问题。突然我有一个错误,说: 致命:身份验证失败 在终端中,我克隆了一个存储库,处理了一个文件,然后使用将文件添加到提交日志中,当我执行时,它工作得很好。最后,要求输入用户名和密码。我把它们正确地放进去,每次我这样做,它都会说同样的错误。 这个问题的原因是什么,我该如何解决? 是:

  • 我使用Github已经有一段时间了,使用、和都很好,到目前为止没有任何问题。突然我有一个错误说: 致命:身份验证失败 在终端中,我克隆了一个存储库,处理了一个文件,然后使用将文件添加到提交日志中,当我执行时,它工作得很好。最后,询问用户名和密码。我把那些正确地放进去,每次我这样做,它说同样的错误。 有没有人知道这个问题的原因是什么,我该怎么修复它? 的内容是:

  • 我正在使用Pact进行消费者驱动的合同测试。在我的usecase中,我的消费者“some-market-service-consumer”正在使用提供者“market-service”。在某个市场服务消费者处“产生”的合同如下所示: 在provider-site上,我正在使用Pact-Provider-Verifier-Docker'。以下是我的测试结果: 看起来,好像测试工作良好-“电话”被测试

  • 问题内容: 我有基于gradle的带有junit测试的Java项目,我正在为其构建CI工作。我使用松弛Slack Notification插件成功地将松弛与Jenkins集成在一起。 Jenkins版本:2.173 松弛通知版本:2.20 jenkins CI是脚本化管道,具有以下代码: SlackNotifier是一个包含以下代码的库: buildUnitTestSlackNotificatio

  • 我试图按照Pact.io上的文档编写一个简单的集成测试。不幸的是,我得到一个例外,如下所示:

  • pact-jvm可以将结果发布回pact代理。但是,我似乎找不到使用标记发布的选项或方法,就像pact Broker的例子: