В документации по Тестирование в проектах Java и JVM достаточно ясно описано, как работает опция --tests
.Это всего лишь включающий фильтр, регистрирующий все соответствующие тесты, которые должны быть выполнены, так же, как при использовании includeTestsMatching
в блоке filter
задачи Test
:
test {
filter {
includeTestsMatching 'org.gradle.internal.*'
}
}
Это также является причинойдля множественного числа в имени параметра, поскольку подстановочные знаки позволяют включать произвольное количество тестов.
Обратите внимание, что подстановочный знак '*'
не имеет особого понимания разделителя пакетов '.'
.Это чисто текстовый.Так что --tests *.SomeTestClass
будет соответствовать любому пакету, независимо от его «глубины».
Начиная с Gradle 4.7, можно использовать простое имя класса без информации о пакете, если вы запустите фильтр с заглавной буквы.
Чтобы включить несколько тестов, которые не разделяют общую структуру пакета, вы должны и можете использовать несколько параметров --tests
, как указано в документации:
Также обратите внимание, чтоможно указать несколько вариантов --tests
, все шаблоны которых вступят в силу.
Дополнительную информацию о тестовых фильтрах можно найти по ссылке выше и по этому связанному вопросу:
Как запустить только один тестовый класс на Gradle
Так же, как дополнительная информация о том, почему один из ваших подходов не сработал:
Выполнение Gradleв командной строке соответствует следующей структуре.Опции допускаются до и после имен задач.
gradle [taskName...] [--option-name...]
В третьем примере другие опции для опции --tests
интерпретируются как имена задач, что объясняетсообщение об ошибке, так как задача с указанным именем не существует.
Чтобы избежать путаницы между значениями параметров и именами задач и остановить помехи в оболочке, вы должны определить фильтры между кавычками, как рекомендовано Mr Hakiв своем блоге .