无法在PACT Broker中发布“最后验证”状态

时间:2018-09-21 11:24:15

标签: gradle pact pact-jvm pact-broker

对于微服务合同测试,我在gradle 4.4中使用了PACT,这是我的build.gradle:

buildscript {
  repositories {
    mavenCentral()
 }
 dependencies {
     classpath 'au.com.dius:pact-jvm-provider-gradle_2.12:3.5.22'
  }
}

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
apply plugin: "au.com.dius.pact"


pact {

 serviceProviders {

    // You can define as many as you need, but each must have a unique name
    UserService {

        // All the provider properties are optional, and have sensible defaults (shown below)
        protocol = 'http'
        host = 'localhost'
        port = 8111
        project.version = "2.0.1"
        hasPactsFromPactBroker('http://10.100.198.200:8113')

        }
}            
  pact {
  publish {
  version = "2.0.1"
  pactDirectory = 'pacts' // defaults to $buildDir/pacts
        pactBrokerUrl = 'http://10.100.198.200:8113'

 }
 }
}

虽然可以在代理中发布契约文件并可以查看依赖关系图,但“最后一次验证”在运行pactVerify方法后显示为空白。我看到了一些有关'pact.verifier.publishResults = true'的文档,并试图将其作为gradle参数传递,但是我收到一条错误消息,提示:

失败:构建失败,并出现异常。

  • 出了什么问题: 您的项目配置错误,在构建中期望使用“ pact”配置,但是却得到了一个字符串,其值为“''。确保没有覆盖“协定”的属性。

我运行的gradle命令是:

      ./gradlew test pactPublish 
      ./gradlew pactVerify -Ppact.verifier.publishResults=true

请让我知道我想念的是什么,pact.verifier.publishResults不被接受

1 个答案:

答案 0 :(得分:0)

第一件事是您的Gradle配置无效。只能有一个pact块。你有两个移除其中带有publish块的内部块(但保留publish块:-D)。

如果这不能解决您的问题,请查看https://github.com/DiUS/pact-jvm/issues/738并查看注释中的任何更改是否有帮助。