Плагин java-test-fixtures не работает с платформой dgs

Я пытался использовать плагин java-test-fixtures в проекте с платформой dgs, но, похоже, он не работает. Он работал с версией 5.5.3 (весенняя загрузка 2.7) платформы dgs, но с версии 6 (весенняя загрузка 3) нет.

У меня есть простой проект весенней загрузки с фреймворком dgs. Я пытаюсь запустить пустой тест, но он выдает исключение с сообщением:

       Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dgsQueryExecutor' defined in class path resource [com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.class]: Unsatisfied dependency expressed through method 'dgsQueryExecutor' parameter 1: Error creating bean with name 'schema' defined in class path resource [com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.class]: Failed to instantiate [graphql.schema.GraphQLSchema]: Factory method 'schema' threw exception with message: errors=['SomeEntity' type [@1:1] tried to redefine existing 'SomeEntity' type [@1:1]]

Мой простой проект: https://github.com/tomsvet/dgs_demo

Мой файл build.gradle.kts выглядит:

       plugins {
    id("org.springframework.boot") version "3.1.0" apply false
    id("io.spring.dependency-management") version "1.1.0"
    id("com.netflix.dgs.codegen") version "5.11.1" apply false
    kotlin("jvm") version "1.8.21"
    kotlin("plugin.spring") version "1.8.21"
    id("java-test-fixtures")
 }
 
 group = "com.dgs.demo"
 version = "0.0.1-SNAPSHOT"
 java.sourceCompatibility = JavaVersion.VERSION_17
 
 repositories {
    mavenCentral()
 }
 dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation(platform("com.netflix.graphql.dgs:graphql-dgs-platform-dependencies:latest.release"))
    implementation("com.netflix.graphql.dgs:graphql-dgs-spring-boot-starter")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
 }

Я исследую, что эта ошибка возвращается только тогда, когда я использовал. Может ли кто-нибудь помочь, что делать, если я хочу использовать плагин тестовых приспособлений с Netflix DGS?

Решение:

Что я обнаружил: при использовании плагина тестовых приспособлений Java Gradle 6 изменил способ добавления производственного исходного кода (основной исходный набор) в путь к классам при компиляции или запуске тестов. Теперь он использует файл jar вместо выходного каталога компиляции (build/classes/java/main). Решение состоит в том, чтобы удалить файлы jar из пути к классам:

      tasks.withType<Test>{ 
val ignoredJarNames = files(tasks.jar).map { it.name }
    classpath = classpath.filter { cpItem -> !ignoredJarNames.contains(cpItem.name) 
} 

или

       tasks.withType<Test>{classpath -= files(tasks.jar)}

Дополнительная информация: https://github.com/gradle/gradle/issues/11696 .

0 ответов

Другие вопросы по тегам