У меня есть сервис, созданный с помощью весенней загрузки с использованием gradle (при необходимости файл gradle внизу) и Junit5. Многие вопросы по stackoverflow касаются maven и Junit4, и мне сложно перевести ответы. Мой тест производителя пакта работает и правильно проверяет контракт на брокере. Однако результат успешной проверки не отправляется брокеру. Что мне нужно сделать, чтобы это произошло?
Пакт исходит от «другой службы» и проверяет, что «мой сервис» правильно возвращает трех милых котиков. Вот как выглядит тест:
package com.miau.package;
// imports
@Provider("my_service")
@Consumer("other_service")
@PactBroker(authentication = @PactBrokerAuth(username = "pact",
password = "${pactPassword}"), //NOSONAR hardcoded password hint no password, just variable
host = "pact-broker.apps.home.io/", port = "443",
tags = "sandbox"
)
@SpringBootTest(classes = Application.class,
properties = { "spring.profiles.active=pact,fake-oauth2", "pact.verifier.publishResults=true" },
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Tag("pact")
@ExtendWith({SpringExtension.class})
public class OtherServiceContractVerifier {
@LocalServerPort
int port;
@Autowired
Application application;
@BeforeEach
void before(PactVerificationContext context) {
HttpTestTarget target = new HttpTestTarget("localhost", port, "/my_service");
context.setTarget(target);
}
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void executePact(PactVerificationContext context) {
context.verifyInteraction();
}
@State("3 cute cats exist")
public void stateThreecuteCatsExists() {
// make 3 cute cats exist in database
}
}
При запуске ./gradlew pactTest pactPublish все работает нормально. Тест пройден, и если я изменю состояние, чтобы иметь только 2 кошки, тест завершится неудачей, поскольку договор требует, чтобы служба возвращала 3 кошки. Однако брокер пакта не показывает успешную проверку. Что мне для этого нужно сделать?
Я пробовал, но, похоже, ошибаюсь:
Выполнить ./gradlew pactVerify -> «Поставщики услуг не настроены».
Не уверен, для чего ему нужны поставщики услуг, так как тест дает всю необходимую информацию. Но после некоторого поиска в Google я нашел это и добавил в свой build.gradle:
Pact {
broker {
pactBrokerUrl = "https://pact-broker.apps.home.io/"
pactBrokerUsername = "pact"
pactBrokerPassword = pactPassword
}
serviceProviders {
'my_service' {
fromPactBroker {
selectors = latestTags('Sandbox')
}
}
}
}
Не знаю, зачем ему эта информация, она вся уже есть в тесте Пакта. но, по крайней мере, он меняет вывод ./gradlew pacVerify, теперь он перечисляет контракт и пытается его проверить, но терпит неудачу с подключением к localhost:8080 [localhost/127.0.0.1, localhost/0:0:0 :0:0:0:0:1] не удалось: соединение отклонено (соединение отклонено) Кажется, это неправильный подход, поскольку он вообще не использует существующий тест. Я не нашел, как это определить, используя существующий тест OtherServiceContractVerifier.
Содержимое файла Gradle, связанное с Pact (я включил ответ на этот вопрос безрезультатно):
{
buildscript {
if (!project.hasProperty('pactPassword')) {
pactPassword = ''
}
if (!project.hasProperty('pactTags')) {
pactTags = ''
}
}
}
plugins {
id "au.com.dius.pact" version "4.1.7"
}
apply plugin: 'au.com.dius.pact'
task pactTest(type: Test) {
environment "pactPassword", "$pactPassword"
description = 'Runs pact tests.'
group = 'verification'
useJUnitPlatform()
outputs.upToDateWhen { false }
testClassesDirs = sourceSets.pactTest.output.classesDirs
classpath = sourceSets.pactTest.runtimeClasspath
shouldRunAfter test
}
check.dependsOn pactTest
dependencies {
pactTestImplementation "au.com.dius:pact-jvm-consumer-junit5:4.0.10"
pactTestImplementation "au.com.dius:pact-jvm-consumer-java8:4.0.10"
pactTestImplementation "au.com.dius:pact-jvm-provider-junit5:4.0.10"
pactTestImplementation "au.com.dius:pact-jvm-provider:4.0.10"
}
test {
useJUnitPlatform {
excludeTags "pact"
}
}
pact {
publish {
pactBrokerUrl = "https://pact-broker.apps.home.io/"
pactBrokerUsername = "pact"
pactBrokerPassword = pactPassword
tags = pactTags.tokenize(',')
}
}
Подробнее здесь: https://stackoverflow.com/questions/643 ... -in-gradle
Как опубликовать результат проверки пакта брокеру пакта в Gradle? ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1719308767
Anonymous
У меня есть сервис, созданный с помощью весенней загрузки с использованием gradle (при необходимости файл gradle внизу) и Junit5. Многие вопросы по stackoverflow касаются maven и Junit4, и мне сложно перевести ответы. Мой тест производителя пакта работает и правильно проверяет контракт на брокере. Однако результат успешной проверки не отправляется брокеру. [b]Что мне нужно сделать, чтобы это произошло?[/b]
Пакт исходит от «другой службы» и проверяет, что «мой сервис» правильно возвращает трех милых котиков. Вот как выглядит тест:
package com.miau.package;
// imports
@Provider("my_service")
@Consumer("other_service")
@PactBroker(authentication = @PactBrokerAuth(username = "pact",
password = "${pactPassword}"), //NOSONAR hardcoded password hint no password, just variable
host = "pact-broker.apps.home.io/", port = "443",
tags = "sandbox"
)
@SpringBootTest(classes = Application.class,
properties = { "spring.profiles.active=pact,fake-oauth2", "pact.verifier.publishResults=true" },
webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@Tag("pact")
@ExtendWith({SpringExtension.class})
public class OtherServiceContractVerifier {
@LocalServerPort
int port;
@Autowired
Application application;
@BeforeEach
void before(PactVerificationContext context) {
HttpTestTarget target = new HttpTestTarget("localhost", port, "/my_service");
context.setTarget(target);
}
@TestTemplate
@ExtendWith(PactVerificationInvocationContextProvider.class)
void executePact(PactVerificationContext context) {
context.verifyInteraction();
}
@State("3 cute cats exist")
public void stateThreecuteCatsExists() {
// make 3 cute cats exist in database
}
}
При запуске ./gradlew pactTest pactPublish все работает нормально. Тест пройден, и если я изменю состояние, чтобы иметь только 2 кошки, тест завершится неудачей, поскольку договор требует, чтобы служба возвращала 3 кошки. Однако брокер пакта не показывает успешную проверку. Что мне для этого нужно сделать?
Я пробовал, но, похоже, ошибаюсь:
Выполнить ./gradlew pactVerify -> «Поставщики услуг не настроены».
Не уверен, для чего ему нужны поставщики услуг, так как тест дает всю необходимую информацию. Но после некоторого поиска в Google я нашел это и добавил в свой build.gradle:
Pact {
broker {
pactBrokerUrl = "https://pact-broker.apps.home.io/"
pactBrokerUsername = "pact"
pactBrokerPassword = pactPassword
}
serviceProviders {
'my_service' {
fromPactBroker {
selectors = latestTags('Sandbox')
}
}
}
}
Не знаю, зачем ему эта информация, она вся уже есть в тесте Пакта. но, по крайней мере, он меняет вывод ./gradlew pacVerify, теперь он перечисляет контракт и пытается его проверить, но терпит неудачу с подключением к localhost:8080 [localhost/127.0.0.1, localhost/0:0:0 :0:0:0:0:1] не удалось: соединение отклонено (соединение отклонено) Кажется, это неправильный подход, поскольку он вообще не использует существующий тест. Я не нашел, как это определить, используя существующий тест OtherServiceContractVerifier.
Содержимое файла Gradle, связанное с Pact (я включил ответ на этот вопрос безрезультатно):
{
buildscript {
if (!project.hasProperty('pactPassword')) {
pactPassword = ''
}
if (!project.hasProperty('pactTags')) {
pactTags = ''
}
}
}
plugins {
id "au.com.dius.pact" version "4.1.7"
}
apply plugin: 'au.com.dius.pact'
task pactTest(type: Test) {
environment "pactPassword", "$pactPassword"
description = 'Runs pact tests.'
group = 'verification'
useJUnitPlatform()
outputs.upToDateWhen { false }
testClassesDirs = sourceSets.pactTest.output.classesDirs
classpath = sourceSets.pactTest.runtimeClasspath
shouldRunAfter test
}
check.dependsOn pactTest
dependencies {
pactTestImplementation "au.com.dius:pact-jvm-consumer-junit5:4.0.10"
pactTestImplementation "au.com.dius:pact-jvm-consumer-java8:4.0.10"
pactTestImplementation "au.com.dius:pact-jvm-provider-junit5:4.0.10"
pactTestImplementation "au.com.dius:pact-jvm-provider:4.0.10"
}
test {
useJUnitPlatform {
excludeTags "pact"
}
}
pact {
publish {
pactBrokerUrl = "https://pact-broker.apps.home.io/"
pactBrokerUsername = "pact"
pactBrokerPassword = pactPassword
tags = pactTags.tokenize(',')
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/64322037/how-to-publish-pact-verification-result-to-pact-broker-in-gradle[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия