Gradle-эквивалент Surefire classpathDependencyExclude

Я пытаюсь перенести Java-проект из Maven в Gradle. В настоящее время проблема заключается в очень сложной настройке зависимостей пути к классам для тестов.

Наша конфигурация maven-surefire-plugin:

 <includes>
     <include>**/SomeTest1.java</include>
 </includes>
 <classpathDependencyExcludes>
     <classpathDependencyExclude>com.sun.jersey:jersey-core</classpathDependencyExclude>
 </classpathDependencyExcludes>

Существуют разные классы для разных тестовых классов. Как я могу реализовать это с Gradle?

2 ответа

Решение

Прежде всего, вам нужно разделить источники ваших тестов на отдельные исходные наборы. Скажем, нам нужно запускать тесты из пакета org.foo.test.rest с немного отличным от времени выполнения классовым путем, чем другие тесты. Таким образом, его выполнение пойдет в otherTest, где остаются тесты:

sourceSets {
    otherTest {
        java {
            srcDir 'src/test/java'
            include 'org/foo/test/rest/**'
        }
        resources {
            srcDir 'src/test/java'
        }
    }
    test {
        java {
            srcDir 'src/test/java'
            exclude 'org/foo/rest/test/**'
        }
        resources {
            srcDir 'src/test/java'
        }
    }
}

После этого вы должны убедиться, что otherTest имеет все необходимые пути к классам компиляции и времени выполнения:

otherTestCompile sourceSets.main.output
otherTestCompile configurations.testCompile
otherTestCompile sourceSets.test.output
otherTestRuntime configurations.testRuntime + configurations.testCompile

Последнее, что нужно исключить (или включить) ненужные пакеты времени выполнения из теста:

configurations {
    testRuntime {
        exclude group: 'org.conflicting.library'
    }
}

И создать задачу Test Gradle для otherTest:

task otherTest(type: Test) {
    testClassesDir = sourceSets.otherTest.output.classesDir
    classpath += sourceSets.otherTest.runtimeClasspath
}

check.dependsOn otherTest

Используйте следующий обходной путь:

  1. Создать исходный набор для необходимых тестов
  2. Добавить конфигурации для созданного sourceSet
  3. Добавить задачу для запуска теста с пользовательской конфигурацией
  4. Настроить тестовое задание в зависимости от настроенного тестового задания
  5. Настроить плагин Report для создания красивого HTML-отчета:)

Как это начало

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