在具有两个不同参数的线上找到多个匹配绑定

Multiple Match bindings found on line with two different parameters

我在同一个功能文件中写了两行(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 }

但是,它显示错误 "Multiple match bindings found. Navigating to first match.."

当我尝试导航第一行时出现错误...但是当我使用第二行导航时。导航正常。

我在应该是"<"和">"的地方用了"$"

据我所知,Visual Studio 集成跳转到它找到的第一步定义。

def()- Steps 的正则表达式也捕获了 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 }

这应该可以解决您的问题。

问题是你的第二个正则表达式:

with (.*) in (.*)

匹配这两行

with a partridge in a pear tree
with a partridge for Christmas in a pear tree

首先,它将选择 "partridge" 和 "a pear tree" 作为两个参数。在第二个中,它将选择 "partridge for Christmas" 和 "a pear tree" 作为参数。由于您的第一个正则表达式也与第二行匹配,因此它确实找到了多个绑定。

您可以使用不同的正则表达式。例如,如果你想挑出一个完整的单词并且不包含任何空格,请尝试使用 (\S*) 而不是 (.*). 匹配任何内容,包括空格。有关正则表达式的更多信息 here.