gpt4 book ai didi

java - 带有 cucumber 的正则表达式与给出错误的字符串不匹配,但如果多次写入测试,则会匹配相同的字符串

转载 作者:行者123 更新时间:2023-12-01 13:01:58 26 4
gpt4 key购买 nike

我正在用java编写并使用带有eclipse的cucumber来搜索具有以下要求的类似IP的字符串

should accept four-digit sequences separated by periods where a digit sequence is defined as follows: Any single digit, Any two-digit characters if the first character is non-zero, A one followed by a zero, one, or two followed by any digit



通过在 Stepdefs.java 文件中编写适当的正则表达式,这就是我写的
@When("^test_ip_address ((?:(\\d)|(1[0-2]\\d)|([1-9]\\d))\\.){3}(?:(\\d)|([1-9]\\d)|(1[0-2]\\d))$")
public void test_ip_address(String arg1) throws Throwable {
System.out.println("test_ip_address true for: " + arg1);
}

现在,当我在 Test.feature 文件中为此方法编写测试(用 Gherkin 语言)时,第一个测试总是失败,测试(应该全部通过)
When test_ip_address 1.2.3.4
When test_ip_address 123.34.76.109
When test_ip_address 123.34.76.109
When test_ip_address 105.22.33.44

这不是值(value)问题,就像我重新排序这些测试时一样,它总是第一个失败,即使我在另一个测试中使用了完全相同的值,它也通过了!这是我得到的错误
cucumber.runtime.CucumberException: Arity mismatch: Step Definition 'skeleton.Stepdefs.test_ip_address(String) in file:(file path..)' with pattern [^test_ip_address ((?:(\d)|(1[0-2]\d)|([1-9]\d))\.){3}(?:(\d)|([1-9]\d)|(1[0-2]\d))$] is declared with 1 parameters. However, the gherkin step has 7 arguments [3., 3, null, null, 4, null, null]

我搜索了错误,当测试中的参数数量与方法中的参数数量不同时,即使我使用 (?:) 将字符串作为一个参数传递,我也不知道在哪里这7个论点来自!也不是错误的原因

最佳答案

cucumber.runtime.CucumberException: Arity mismatch: Step Definition 'skeleton.Stepdefs.test_ip_address(String) in file:(file path..)' with pattern [^test_ip_address ((?:(\d)|(1[0-2]\d)|([1-9]\d))\.){3}(?:(\d)|([1-9]\d)|(1[0-2]\d))$] is declared with 1 parameters. However, the gherkin step has 7 arguments [3., 3, null, null, 4, null, null]

这个错误是由于正则表达式有 7 个组。捕获7个参数。和方法
public void test_ip_address(String arg1) throws Throwable

仅声明 1 个参数 ( arg1 )。

要仅捕获一个参数,请使用 non capturing group避免捕获不必要的组作为方法参数。

表达式应如下所示:
@When("^test_ip_address ((?:(?:(?:\\d)|(?:1[0-2]\\d)|(?:[1-9]\\d))\\.){3}(?:(?:\\d)|(?:[1-9]\\d)|(?:1[0-2]\\d)))$")

关于java - 带有 cucumber 的正则表达式与给出错误的字符串不匹配,但如果多次写入测试,则会匹配相同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62241197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com