Maven Surefire Run проверяет ограничение строки командной строки (-Dtest = xyz # ab c) - PullRequest
0 голосов
/ 21 января 2020

Я использую Maven Surefire для запуска подмножества моих тестовых случаев через Jenkins на Windows сервере.

Чтобы указать тестовые случаи для запуска, я выполняю:

mvn surefire:test -DfailIfNoTests=false -Dtest=x.y.z#a,x.y.z#b

Проблема в том, что в Windows (CMD.exe) имеется Ограничение строки командной строки , которое не позволяет выполнять очень длинный список тестов (ограничение 8191 символа).

У кого-нибудь есть идея, могу ли я использовать файл в качестве входных данных для параметра -Dtest (т.е. -Dtest=testcases.txt) или какие-либо другие идеи для решения этой проблемы?

Я знаю, я Я могу переключиться на Groovy скрипты в Jenkins, а не CMD.exe, но я хочу этого избежать.

ОБНОВЛЕНИЕ [21 января 2020]

Две вещи, которые я должен уточнить:

  1. Я выбираю тестовые примеры динамически в многомодульном проекте Maven, что означает, что настройка pom.xml обычно является опцией, но я хотел избежать этого.
  2. Я уже пытался вызвать команду из Python скрипта, а не вызывать ее напрямую Window cmd.exe:
import subprocess

command = 'mvn surefire:test -Dtest={} -DfailIfNoTests=false'.format(tests)
subprocess.call(command, shell=True)

Это тоже не работает, возможно, Powershell - это вариант, предложенный @ mark-bramnik?

ОБНОВЛЕНИЕ [17 февраля 2020 г. ]

Powershell и / или .bat также не работают, и не работает его внутри скрипта .sh из Windows Git bash. При запуске его с помощью сценария .sh я получаю сообщение об ошибке, связанное с JDK:

/c/maven-3.6.1/bin/mvn: line 191: /c/Program Files/Java/jdk-11/bin/java: Argument list too long
/c/maven-3.6.1/bin/mvn: line 191: /c/Program Files/Java/jdk-11/bin/java: No error

Очевидно, что ограничение на длину команды присуще в ОС Windows.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Нашел решение, используя опцию Maven Surefire -Dsurefire.includesFile, которая, очевидно, может использоваться аналогично -Dtest, за исключением того, что вы можете предоставить файл с именами тестов.

0 голосов
/ 21 января 2020

Вы можете настроить список тестов для запуска прямо в пом. xml модуля, который вы запускаете.

Если вы хотите, чтобы этот список загружался только из jenkins, создайте специальный профиль maven (снова внутри того же pom xml) и создайте конфигурацию с верной конфигурацией плагина внутри этого профиля.

Другой способ - поместить строку, в которую вы запускаете, в какой-то сценарий оболочки (в мире windows это будет что-то вроде Power Shell).

Кроме этого, -Dtest Насколько я знаю, файл не может быть принят в текущей верной реализации, поэтому, если вы не хотите расширять плагин surefire (в чем я сомневаюсь :)), вам, вероятно, следует использовать один из вышеупомянутых методов

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