我有一些自动化测试,我正在使用Jenkins参数化项目。它是一个使用TestNG的Maven项目,我在运行时传递值
我正在使用Choice Parameters将值作为字符串传递。但是,一些参数属于int类型。
因此,我将其转换如下(为简化说明而简化的代码):
@BeforeClass
@Parameters({"numOfAdults"})
public void setup(String numOfAdults) {
numOfPeople = new SearchDetails()
.withNumberOfAdults(Integer.valueOf(numOfAdults.trim()))
我在运行时传递的maven目标是:
clean test -DsuiteFile=src\test\resources\tools\testng_custom_runner.xml -DnumAdults=$numOfAdults
TestNG Suite文件包含参数:
<parameter name="numOfAdults" value="${numAdults}"/>
Maven文件如下:
<properties>
<sl4j.version>1.7.7</sl4j.version>
<suiteFile>${suiteFile}</suiteFile>
<numAdults>${numAdults}</numAdults>
</properties>
//...........
<systemPropertyVariables>
<numAdults>${numAdults}</numAdults>
</systemPropertyVariables>
构建失败:
java.lang.NumberFormatException: For input string: "$numOfAdults"
我确信有一个明显的答案(和解决方案) - 代码在IDE中运行良好。是否有更好/更安全的方式通过运行时传递或转换变量?我需要在下拉框中公开变量,以便非技术人员可以使用不同的数据运行测试。