我在同一个功能文件
中写了两行(When's)When user $action1$ $key1$ with $value1$ for $atttributeType_Value$ in $Filename1_SectionId1$
Then abc
When user $action2$ $key2$ with $value2$ in $Filename2_SectionId2$
Then def
和步骤定义文件中的相应步骤定义
作为
[When(@"user (.*) (.*) with (.*) for (.*) in (.*)")]
public void abc()
{ //operation }
[When(@"user (.*) (.*) with (.*) in (.*)")]
public void def()
{ //operation }
但是,它显示错误为“找到多个匹配绑定。导航到第一个匹配..”
当我尝试导航第一行时给出错误...但是当我使用第二行时导航。它正确导航。
我在“<”的地方使用了“$”和“>”应该在那里。
答案 0 :(得分:6)
问题是你的第二个正则表达式:
DataGridView
匹配这两行
ListView
首先,它会选择"鹧and"和一棵梨树"作为两个论点。在第二个,它会拿起圣诞节的鹧and"和一棵梨树"作为论点。由于你的第一个正则表达式也匹配第二行,它确实找到了多个绑定。
您可以使用其他正则表达式。例如,如果您想挑选一个完整的单词而不包含任何空格,请尝试with (.*) in (.*)
而不是with a partridge in a pear tree
with a partridge for Christmas in a pear tree
。 (\S*)
匹配任何内容,包括空格。有关正则表达式的更多信息here。
答案 1 :(得分:0)
AFAIK Visual Studio集成跳转到它找到的第一步定义。
def()的正则表达式 - 步骤也捕获了abc-Step的情况。 您是否尝试将参数放在单引号内?
就像那样:
特点:
When user '$action1$' '$key1$' with '$value1$' for '$atttributeType_Value$' in '$Filename1_SectionId1$'
Then abc
When user '$action2$' '$key2$' with '$value2$' in '$Filename2_SectionId2$'
Then def
步骤绑定:
[When(@"user '(.*)' '(.*)' with '(.*)' for '(.*)' in '(.*)'")]
public void abc()
{ //operation }
[When(@"user '(.*)' '(.*)' with '(.*)' in '(.*)'")]
public void def()
{ //operation }
那应该解决你的问题。