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

Pact验证不工作-在消息提供程序测试期间找不到带注释的方法

雷献
2023-03-14

我的pom.xml配置如下:

<plugin>
<groupId>au.com.dius</groupId>
<artifactId>pact-jvm-provider-maven_2.11</artifactId>
<version>3.5.2</version>
<configuration>
    <!-- pactBrokerUrl,user name,password and project version required only 
                    for consumer -->
    <pactBrokerUrl>localhost</pactBrokerUrl>
    <projectVersion>0.0.1</projectVersion>
    <!-- service provider required only for producer -->
    <serviceProviders>
        <!-- <serviceProvider><name>provider</name><verificationType>ANNOTATED_METHOD</verificationType><consumers><consumer><name>consumer</name><pactUrl>pacturl</pactUrl></consumer></consumers></serviceProvider> -->
        <serviceProvider>
            <name>provider</name>
            <verificationType>ANNOTATED_METHOD</verificationType>
            <consumers>
                <consumer>
                    <name>consumer</name>
                    <pactUrl>pacturl</pactUrl>
                </consumer>
            </consumers>
        </serviceProvider>
    </serviceProviders>
    <classpathElements>
        <classpathElement>
          src/test/java
      </classpathElement>
    </classpathElements>
    <configuration>
        <pact.showStacktrace>true</pact.showStacktrace>
    </configuration>
</configuration>
</plugin>

共有1个答案

雍骏俊
2023-03-14

在进行生产者端测试时,您需要提供JSON契约。在这些合同中,你有生产者的名字。从您的提供者测试中,您需要引用合同的位置和提供者的名称。

@RunWith(RestPactRunner.class) // Custom pact runner, child of PactRunner which runs only REST tests
@Provider("myProducersNameAsItApearsInContract") // Set up name of tested provider
@PactFolder("path/to/pact/contracts") // Point where to find pacts (See also section Pacts source in documentation)

合同中提供商的名称如下:

    "provider": {
    "name": "myProvider"
},

编辑:

@PactFolder("src/test/resources/pacts")
 类似资料:
  • 我试图按照Pact.io上的文档编写一个简单的集成测试。不幸的是,我得到一个例外,如下所示:

  • 关于测试提供程序,我有几个问题: 在进行测试之前,是否需要启动提供程序服务?我应该在测试中到达实际的提供者endpoint吗?例如,假设我的提供者代码库上有一个GET/dogsendpoint。运行测试时,是否需要在本地启动服务,点击/dogsendpoint,然后用pact文件验证为该endpoint返回的响应? 如果我想将其作为配置项管道的一部分运行(我使用的是Circloci),那么有哪些最

  • 测试运行的结果如下: 由于使用本地协议文件会使测试变为绿色,我想原因不在我的测试类代码中,不过如果有帮助的话,我在这里提供它: 由于使用本地协议文件不是一个选项,我真的想知道如何修复错误,并将感谢任何有帮助的意见。

  • 我想为我的客户和API建立契约测试。我的API不能在本地运行,所以我希望能够在部署到生产之前,针对已部署的API临时版本运行提供程序测试。 我在网上看到的提供程序测试的大多数示例都使用了localhost。当尝试对我部署的HTTPSendpoint运行提供程序测试时,测试失败,显示。是不支持HTTPS协议,还是我遗漏了什么? 使用pact-provider-verifier cmd line工具工

  • 我正在将应用程序的安全性迁移到Spring Security4.0。我的要求是身份验证应该是JAAS身份验证,自动化数据将从数据库中提取。所以我已经编写和自定义了身份验证提供程序。但我的问题是Spring没有将身份验证请求委托给我的自定义身份验证提供程序。 代码如下 web.xml条目 调用堆栈

  • 我正在使用pact-jvm提供程序Spring。我有两个不同的pact(.json)文件,比如(order.json和irs.json),我需要按顺序运行它们(order后面是irs),但是根据字母顺序选择测试类,irs首先运行,order其次运行。是否有方法调用、执行特定的测试类提供程序状态或定义测试类执行顺序?