Gradle: как исключить некоторые тесты?

Моя папка src/test/ включает как единичные, так и функциональные тесты. Класс path функциональных тестов имеет слово cucumber, тогда как в модульных тестах нет. Итак, как я могу запустить только модульные тесты?

Большое спасибо.

P.S.. Я знаю, что для выбора тестов легко использовать логику "включить". Например, чтобы запустить только функциональные тесты в моем случае, я могу просто использовать это приложение ./gradlew test -Dtest.single=cucumber/**/
Однако я не знаю, как легко исключить тесты.

Кстати, я использую gradle 1.11.

Ответы

Ответ 1

В документации задачи объясняется это, пример и все:

apply plugin: 'java' // adds 'test' task

test {
  // ...

  // explicitly include or exclude tests
  include 'org/foo/**'
  exclude 'org/boo/**'

  // ...
}

Ответ 2

Кредит. Этот ответ вдохновлен ответом JB Nizet. Он опубликован, потому что он более прямо связан с моим вопросом.

Для запуска только модульных тестов создайте новую задачу следующим образом:

task unitTest( type: Test ) {
    exclude '**/cucumber/**'
}

Таким образом мы имеем:
выполните все тесты: ./gradlew test
выполните все модульные тесты: ./gradlew unitTest
выполните все функциональные тесты: ./gradlew test -Dtest.single=cucumber/**/

Ответ 3

Вы можете исключить это на основе внешних системных свойств.

-Dtest.profile=integration

и в build.gradle

test {
    if (System.properties['test.profile'] != 'integration') {
    exclude '**/*integrationTests*'
   }
}