Я использую 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]
Две вещи, которые я должен уточнить:
- Я выбираю тестовые примеры динамически в многомодульном проекте Maven, что означает, что настройка
pom.xml
обычно является опцией, но я хотел избежать этого. - Я уже пытался вызвать команду из 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.