Gradle - как запустить тесты из другого проекта gradle и при этом получить данные о покрытии - PullRequest
4 голосов
/ 04 января 2012

Кто-нибудь знает, как запустить тесты из другого проекта gradle и по-прежнему получать данные отчетов о покрытии Эммы?

Вот мой текущий макет:

Root/
  settings.gradle (no explicit build.gradle - just defines all subprojects)
  SubProjectA/
    build.gradle
    src/ (all real source is here)
  SubProjectATest/
    build.gradle
    src/ (all testing code is here)
  SubProjectB/ (similar structure as A)
  SubProjectBTest/ (similar structure as ATest)

В настоящее время я использую плагин emma, и я хотел бы собрать SubProjectA и запустить все тесты в SubProjectATest из build.gradle SubProjectA .

Вот некоторые вещи, которые я пробовал в build.gradle SubProjectA

  1. testCompile project(':SubProjectATest').sourceSets.test.classes (, как предлагается в этой статье ), но я получил ошибку"Could not find property 'sourceSets' on project"
  2. Просто линейка testCompile project(':SubProjectATest'), но затем я получаю "..SubProjectA/build/classes/test', not found", а также "Пропуск задачи" :SubProjectA:compileTestJava' as it has no source files. "
  3. Просто добавлениенабор источника, подобный следующему:

    test {java {srcDir '../SubProjectATest/src'}}

Добавление исходного набора в (вариант 3) - единственный вариант, который сработал, но кажется, что это не так.Кто-нибудь знает, как сделать это, используя зависимости проекта?

Обновление # 1 Я также попробовал один из ответов ниже, чтобы использовать test.dependsOn, и тесты все же выполняются, но Плагин emma сообщил следующее: build/classes/test', not found

1 Ответ

4 голосов
/ 04 января 2012

1. и 2. просто добавьте классы в путь к классам тестовой компиляции. Это не влияет на то, какие тесты будут выполняться.

3. это неправильный подход, потому что вы не должны добавлять источники из проекта X в проект Y.

Если вам нужно, чтобы gradle :SubProjectA:test также выполнял :SubProjectATest:test, все, что вам нужно сделать, это добавить зависимость задачи :

SubProjectA / build.gradle:

test.dependsOn(":subProjectATest:test")

Кстати, как вы мотивируете помещение тестов в отдельный проект?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...