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

问题描述 投票:0回答:1

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

  • consumer1: release123, release007, release999
  • consumer2: release69, release420, release50

疑问

  • 如何针对消费者及其标签的特定组合运行提供者测试?
  • 例如,消费者1 release007,消费者2 release69 AND release50?
  • 是这样的吗?-Dpactbroker.consumers=consumer1:release007,consumer2:release69,consumer2:release50 ?

我特别需要这个东西给junit,因为我们大部分使用java应用作为提供者。

我发现

  • 在junit中,有一个注解 @PactBroker 允许您指定 tagsconsumers
  • 根据描述,这些都可以通过系统属性来设置。pactbroker.tagspactbroker.consumers
  • 可以指定每一个的多个,用逗号隔开--例如。-Dpactbroker.consumers=consumer1,consumer2
  • 我没有发现标签和消费者是否可以配对 当运行供应商测试。
junit pact
1个回答
0
投票

请尝试下面的解决方案,也许会有帮助

您可以在提供者类上添加如下内容

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;

提供者添加在类上

    @IgnoreNoPactsToVerify
    @PactBroker(
    authentication = @PactBrokerAuth(password = "*******", username = "********"),
    host = "*******",
    tags = {"test", "dev", "latest"},
    port = "*****",
    failIfNoPactsFound = false,
    protocol = "http")

在消费者端,你可以在每个测试用例上添加如下内容。

API使用

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")
© www.soinside.com 2019 - 2024. All rights reserved.