Как запустить несколько именованных тестов с Gradle? - PullRequest
0 голосов
/ 29 мая 2018

Я знаю, как сказать

gradle test --tests mypackage.MyTest

, но как указать более одного?

gradle test --tests mypackage.MyTest,mypackage.model.ModelTest,BasicTests

Казалось, что это просто запуск одного из тестов наугад.

gradle test --tests mypackage.MyTest mypackage.model.ModelTest BasicTests

Это говорит мне

Задача 'mypackage.model.ModelTest' не найдена в корневом проекте 'myproject'.

Я прочитал много руководстви учебники (и несколько сообщений SO), и не нашли явного упоминания об ответе.Но я видел, что кто-то передает --tests «somepackage. *» В качестве аргумента, поэтому я подумал, что кавычки вокруг пробелов могут помочь.

gradle test --tests "mypackage.MyTest mypackage.model.ModelTest BasicTests"

Это не быстро, но, к сожалению, запускает только первый теств списке.

Так что я думаю, что я только что был введен в заблуждение множественным числом в "--tests", и нет никакого способа на самом деле дать ему список, верно?

1 Ответ

0 голосов
/ 30 мая 2018

В документации по Тестирование в проектах 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в своем блоге .

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