Maven Surefire 运行测试命令行字符串限制 (-Dtestu003dx.y.z#abc)
问题:Maven Surefire 运行测试命令行字符串限制 (-Dtestu003dx.y.z#abc) 我正在使用 Maven Surefire 在 Windows Server 上通过 Jenkins 运行我的一部分测试用例。 要指定要运行的测试用例,我执行: mvn surefire:test -DfailIfNoTests=false -Dtest=x.y.z#a,x.y.z#b 问题是
问题:Maven Surefire 运行测试命令行字符串限制 (-Dtestu003dx.y.z#abc)
我正在使用 Maven Surefire 在 Windows Server 上通过 Jenkins 运行我的一部分测试用例。
要指定要运行的测试用例,我执行:
mvn surefire:test -DfailIfNoTests=false -Dtest=x.y.z#a,x.y.z#b
问题是在 Windows (CMD.exe) 上有一个命令行字符串限制不允许执行很长的测试列表(限制 8191 个字符)。
有谁知道我是否可以使用文件作为-Dtest
参数的输入(即-Dtest=testcases.txt
)或任何其他想法来解决这个问题?
我知道我可以在 Jenkins 中切换到 Groovy 脚本而不是 CMD.exe,但我想避免这种情况。
更新[2020 年 1 月 21 日]
我必须澄清两件事:
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 建议的一个选项?
更新[2020 年 2 月 17 日]
Powershell 和/或.bat
也不起作用,也不能在 Windows Git bash 的.sh
脚本中运行它。通过.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 操作系统中。
解答
使用 Maven Surefire 的选项-Dsurefire.includesFile
找到了一个解决方案,它显然可以与-Dtest
类似地使用,只是您可以提供一个带有测试名称的文件。
更多推荐
所有评论(0)