Как добавить testFixures в качестве зависимости JvmTestSuite с gradle

Я использую в сочетании сjvm-test-suite. Я бы хотел, чтобы my был доступен как для модульных тестов, так и для моего пакета.

java-test-fixturesдобавляет в качестве зависимости к набору модульных тестов по умолчанию вместе с переходными зависимостями времени компиляции и времени выполнения. Как правильно добавить это вintegrationTestслишком?

Следующее работает, но кажется немного повторяющимся:

      plugins {
    id 'java'
    id 'application'
    id 'java-test-fixtures'
    id 'jvm-test-suite'
}

testing {
    suites {
        integrationTest(JvmTestSuite) {
            dependencies {
                implementation sourceSets.testFixtures.output
            }
            configurations {
                integrationTestCompileClasspath.extendsFrom testFixturesApi
                integrationTestRuntimeClasspath.extendsFrom testFixturesRuntimeClasspath
            }
        }
    }
}

Я также могу использовать , но только если я объявляю зависимость в блоке зависимостей верхнего уровня, при этом блок зависимостей верхнего уровня появляется после объявления набора тестов:

      testing {
  suites {
    integrationTest(JvmTestSuite) {}
  }
}

dependencies {
  integrationTestImplementation testFixtures(project)
}

Это работает, если все транзитивные зависимости настроены правильно. Любопытно, я не могу использоватьtestFixtures(project)внутри объявления набора тестов - следующее:

      testing {
  suites {
    integrationTest(JvmTestSuite) {
      dependencies {
        implementation testFixtures(project)
      }
    }
  }
}

... не может оценить.

Есть ли предпочтительный способ, чтобы набор тестов зависел отtestFixtures?

1 ответ

На данный момент это самый краткий вариант (Kotlin DSL).

      dependencies {
    implementation(testFixtures(project(":project_name")))
}

Возможно, API изменился с тех пор, как вы опубликовали вопрос, поскольку он все еще находится на стадии разработки.

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