Pact.io,Junit-如何使用不同的标签测试多个消费者?

Pact.io,Junit-如何使用不同的标签测试多个消费者?,junit,pact,Junit,Pact,我有多个(不仅仅是junit)消费者应用程序,它们在pact broker中创建契约。 这些消费者有许多不同的git分支,例如: consumer1:release123、release007、release999 consumer2:release69、release420、release50 问题 如何针对消费者及其标签的特定组合运行提供者测试? e、 g.消费者1版本007、消费者2版本69和版本50? 这些是否类似于-Dpactbroker.consumers=consumer1:

我有多个(不仅仅是junit)消费者应用程序,它们在pact broker中创建契约。
这些消费者有许多不同的git分支,例如:

  • consumer1
    release123、release007、release999

  • consumer2
    release69、release420、release50
问题

  • 如何针对消费者及其标签的特定组合运行提供者测试?
  • e、 g.消费者1版本007、消费者2版本69和版本50?
  • 这些是否类似于
    -Dpactbroker.consumers=consumer1:release007,consumer2:release69,consumer2:release50
对于junit,我尤其需要它,因为我们主要使用java应用程序作为提供者

我的发现:

  • 在junit中,有一个注释
    @PactBroker
    ,它允许您指定
    标记
    消费者

  • 根据描述,可以通过系统属性
    pactbroker.tags
    pactbroker.consumers

  • 每个都可以指定倍数,用逗号分隔-例如:
    -Dpactbroker.consumers=consumer1,consumer2
  • 我没有发现在运行提供商测试时是否可以将标签和消费者配对

    • 请尝试下面的解决方案,可能会有所帮助

      您可以在提供程序类中添加如下内容

      使用的API

       import au.com.dius.pact.provider.junit.IgnoreNoPactsToVerify;
       import au.com.dius.pact.provider.junit.Provider;
       import au.com.dius.pact.provider.junit.State;
       import au.com.dius.pact.provider.junit.loader.PactBroker;
       import au.com.dius.pact.provider.junit.loader.PactBrokerAuth;
       import au.com.dius.pact.provider.junit.loader.PactFolder;
       import au.com.dius.pact.provider.junit.target.Target;
       import au.com.dius.pact.provider.junit.target.TestTarget;
       import au.com.dius.pact.provider.spring.SpringRestPactRunner;
       import au.com.dius.pact.provider.spring.target.SpringBootHttpTarget;
      
      import au.com.dius.pact.consumer.Pact;
      import au.com.dius.pact.consumer.PactProviderRuleMk2;
      import au.com.dius.pact.consumer.PactVerification;
      import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
      import au.com.dius.pact.model.RequestResponsePact;
      
      类上添加了提供程序

          @IgnoreNoPactsToVerify
          @PactBroker(
          authentication = @PactBrokerAuth(password = "*******", username = "********"),
          host = "*******",
          tags = {"test", "dev", "latest"},
          port = "*****",
          failIfNoPactsFound = false,
          protocol = "http")
      
      在消费者端,您可以添加每个测试用例,如下所示

      使用的API

       import au.com.dius.pact.provider.junit.IgnoreNoPactsToVerify;
       import au.com.dius.pact.provider.junit.Provider;
       import au.com.dius.pact.provider.junit.State;
       import au.com.dius.pact.provider.junit.loader.PactBroker;
       import au.com.dius.pact.provider.junit.loader.PactBrokerAuth;
       import au.com.dius.pact.provider.junit.loader.PactFolder;
       import au.com.dius.pact.provider.junit.target.Target;
       import au.com.dius.pact.provider.junit.target.TestTarget;
       import au.com.dius.pact.provider.spring.SpringRestPactRunner;
       import au.com.dius.pact.provider.spring.target.SpringBootHttpTarget;
      
      import au.com.dius.pact.consumer.Pact;
      import au.com.dius.pact.consumer.PactProviderRuleMk2;
      import au.com.dius.pact.consumer.PactVerification;
      import au.com.dius.pact.consumer.dsl.PactDslWithProvider;
      import au.com.dius.pact.model.RequestResponsePact;
      
      测试用例级别

      @Pact(consumer = "consumer-service-name")