Пользовательский источник теста, установленный с Gradle Kotlin DSL и Intellij - PullRequest
0 голосов
/ 21 февраля 2019

Мой проект использует Gradle с Kotlin DSL для сборки.Теперь я хочу добавить собственный набор исходных текстов, используемый для тестирования.Соответствующий код выглядит следующим образом:

java {
    sourceSets.create("systemTest") {
        java.srcDir("src/system-test/java")
        resources.srcDir("src/system-test/resources")
    }
}

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

idea.module {
 testSourceDirs.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)
testSourceDirs.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)
}

Однако, если я затем делаю ./gradlew clean idea и открываю проект с использованием сгенерированных файлов (обычно я импортирую свои проекты из Gradle),Папка system-test вообще не рассматривается как модуль источника.

Кто-нибудь имел опыт объявления пользовательского набора исходных кодов с помощью Kotlin DSL и пометки его как тестового модуля?

EDIT : Теперь я создал пример проекта Gradle с использованием Groovy, и там он без проблем работал с использованием следующего кода (который, я думаю, является просто отличной версией моих утверждений выше):

sourceSets {
  systemTest {
    java {
      compileClasspath += main.output + test.output
      runtimeClasspath += main.output + test.output
      srcDir file('src/system-test/java')
    }
    resources.srcDir file('src/system-test/resources')
  }
}

idea {
    module {
        testSourceDirs += project.sourceSets.systemTest.java.srcDirs
        testSourceDirs += project.sourceSets.systemTest.resources.srcDirs
    }
}

Так что я тоженеправильное преобразование в Kotlin DSL или ошибка на стороне Intellij.

1 Ответ

0 голосов
/ 22 февраля 2019

Похоже, что я неправильно понял преобразование Котлина, оно должно быть

idea.module {
    val testSources = testSourceDirs

    testSources.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)
    testSources.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)

    testSourceDirs = testSources
}

При использовании этого фрагмента набор testSourceDirs изменяется и соответствующий набор источников помечается как тестовый модуль.

...