Pact.io, Junit - Как протестировать несколько потребителей с разными тегами? - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть несколько (не только junit) потребительских приложений, которые создают пакты в pact broker.
У этих потребителей много разных git ветвей - например:

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

Вопрос

  • как запускать тесты провайдера для определенных c комбинаций потребителей и их тегов?
  • например, customer1 release007, consumer2 release69 И release50?
  • это что-то вроде -Dpactbroker.consumers=consumer1:release007,consumer2:release69,consumer2:release50 ?

Мне особенно это нужно для junit, так как мы в основном используем java приложений в качестве провайдеров.

Что я нашел:

  • в junit, есть аннотация @PactBroker, которая позволяет указывать tags и consumers
  • в соответствии с описанием, их можно установить через системные свойства pactbroker.tags и pactbroker.consumers
  • можно указывать кратные каждому, разделенные запятой - например: -Dpactbroker.consumers=consumer1,consumer2
  • Я не нашел, если теги a nd потребители могут быть спарены при выполнении тестов провайдера

1 Ответ

0 голосов
/ 25 апреля 2020

Пожалуйста, попробуйте приведенное ниже решение, возможно, оно поможет

Вы можете добавить, как показано ниже, для класса провайдера

Используемый 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")
...