cucumber之为什么 Cucumber 会引发 AmbiguousStepDefinitionsException

tuyile006 阅读:13 2024-05-10 16:29:43 评论:0

cucumber.runtime.AmbiguousStepDefinitionsException: ✽.Given I am an admin user(src/test/resources/features/alerts.feature:9) matches more than one step definition: 
  I am an admin in LoginStepDefinitions.iAmAnAdmin() 
  ^I am an admin user$ in AlertsStepDefinitions.iAmAUser() 
 
    at cucumber.runtime.RuntimeGlue.stepDefinitionMatch 

我给出了 2 个不同的定义。我不确定为什么会出现此错误。

请您参考如下方法:

您收到此错误是因为

/I am an admin/ # in LoginStepDefinitions.iAmAnAdmin() 


/^I am an admin user$/ # in AlertsStepDefinitions.iAmAUser() 

两者都匹配
"I am an admin user" # at src/test/resources/features/alerts.feature:9 

第一个正则表达式匹配第二个正则表达式所做的一切,因此任何匹配第二个正则表达式的步骤都将匹配两者并导致此错误。

您可以通过使第一个正则表达式不是第二个正则表达式的子集来修复它。一种选择是将第一个正则表达式更改为
/^I am an admin$/ 

我通常发现要求步骤定义匹配整个步骤是一个好主意(即以 ^ 开始并以 $ 结束),直到我找到一个很好的理由不这样做。但是,如何组织您的步骤,使它们都明确无误并且对读者有意义,这取决于您。


标签:Exception
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号