pact gradle プラグインとコンシューマー/プロバイダーの依存関係を使用して、キュー内のメッセージの pact テストを作成しています。
しかし、実行./gradlew clean pactVerify
するとエラーが発生します:
Verification Failed - Could not load class mypackage.MyClass :
java.lang.UnsupportedClassVersionError: mypackage/MyClass has been compiled by a more
recent version of the Java Runtime (class file version 59.0), this version of the Java
Runtime only recognizes class file versions up to 55.0
私は Java 15 でコンパイルしていますが、https://github.com/pact-foundation/pact-jvmは 4.2.x が Java 15 と互換性があると述べています。
消費者コード:
@ExtendWith(PactConsumerTestExt.class)
@PactTestFor(providerName = "Provider", providerType = ProviderType.ASYNCH)
class PactTest {
@Pact(consumer = "consumer")
MessagePact createPact(MessagePactBuilder builder) {
PactDslJsonBody body = new PactDslJsonBody()
.stringValue("testParam1", "value1")
.stringValue("testParam2", "value2");
return builder.given("ProviderOk")
.expectsToReceive("a valid message")
.withContent(body)
.toPact();
}
@Test
@PactTestFor(pactMethod = "createPact")
void test(List<Message> messages) {
assertThat(new String(messages.get(0).contentsAsBytes()), is("{\"testParam1\":\"value1\",\"testParam2\":\"value2\"}"));
}
}
コンシューマー構成:
plugins {
id("au.com.dius.pact") version "4.2.9"
}
dependencies {
testImplementation("au.com.dius.pact", "consumer", "4.2.9")
testImplementation("au.com.dius.pact.consumer", "junit5", "4.2.9")
}
pact {
publish {
pactDirectory = "build/pacts"
consumerVersion = version
}
}
プロバイダ コード:
class PactTest {
@PactVerifyProvider("a valid message")
String verifyMessage() {
return "{\"testParam1\":\"value1\",\"testParam2\":\"value2\"}";
}
}
プロバイダー構成:
plugins {
id("au.com.dius.pact") version "4.2.9"
}
dependencies {
testImplementation("au.com.dius.pact", "provider", "4.2.9")
}
pact {
serviceProviders {
create("Provider") {
verificationType = ANNOTATED_METHOD
packagesToScan = listOf("...mypackage...")
hasPactWith("ICS") {
pactSource = file("config/consumer-Provider.json")
}
}
}
}
私が入手したプロバイダーのサンプルコード: https://github.com/pact-foundation/pact-jvm/tree/master/provider/gradle#verifying-a-message-provider