我的功能文件为#
And Pick random value between '100.3' and '200.9'
当我执行Feature am as as
时要使用随机函数,我需要将值加倍,不确定值(float / double)如何划分为int
@And("^Pick random value between '(\\d+)\\.(\\d+)' and '(\\d+)\\.(\\d+)'$")
public void pickrandomvaluebetween(int arg1, int arg2, int arg3, int arg4) throws Throwable {
有人可以帮忙吗?不确定是否缺少任何依赖
答案 0 :(得分:1)
我认为你想要的是将范围的低点和高点作为单独的数字捕捉。尝试使用这种模式:
@And("^Pick random value between '(\d+(?:\.\d+)?)' and '(\d+(?:\.\d+)?)'$")
public void pickrandomvaluebetween(String min, String max) throws Throwable {
// ... parse min/max as floats or doubles
// do something
}
模式(\d+(?:\.\d+)?)
表示匹配一个或多个数字,后跟可选的小数位和一个或多个数字。您在内括号内看到的?:
应该告诉Java 不将小数点部分捕获为单独的模式。相反,如上面的演示所示,仅捕获整个(可能是浮点)数字。
答案 1 :(得分:1)
@And("^Pick random value between '([\d\.]+)' and '([\d\.]+)'$")
public void pickrandomvaluebetween(String minValueStr, String maxValueStr) {
float minValue = Float.parseFloat(minValueStr);
float maxValue = Float.parseFloat(maxValueStr);
}
答案 2 :(得分:0)
从Cucumber-jvm v3.x开始,您可以使用Cucumber表达式,因此您不必再使用Regex了。资料来源:https://cucumber.io/blog/2018/05/19/announcing-cucumber-jvm-3-0-0