0

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/blob/ac6a0eae0b18183f6f453eafddb89b90741ace42/consumer/junit5/src/test/java/au/com/dius/pact/consumer/junit5/ AsyncMessageTest.java

私が入手したプロバイダーのサンプルコード: https://github.com/pact-foundation/pact-jvm/tree/master/provider/gradle#verifying-a-message-provider

4

0 に答える 0