我有多个(不仅仅是junit)消费者应用程序,它们在契约经纪人中创建契约。这些消费者有许多不同的 git 分支 - 例如:
consumer1
: release123, release007, release999
consumer2
: release69, release420, release50
疑问
-Dpactbroker.consumers=consumer1:release007,consumer2:release69,consumer2:release50
?我特别需要这个东西给junit,因为我们大部分使用java应用作为提供者。
我发现
@PactBroker
允许您指定 tags
和 consumers
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;
提供者添加在类上
@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")