当前位置: 首页 > 编程语言 > C#

Specflow测试步骤继承导致“步骤定义不明确”分享

时间:2023-04-10 21:21:56 C#

Specflow测试步骤继承导致“步骤定义不明确”我想有如下测试步骤类结构:[Binding]publicclassBaseStep{[Given(@“有一个客户”)]publicvoidGivenThereIsACustomer(表表){HandleCustomer(表);}protectedvirtualvoidHandleCustomer(Tabletable){}}[Binding]publicclassFeatureOneStep:BaseStep{protectedoverridevoidHandleCustomer(Tabletable){//featureoneaction}[Given(@"featureonespecificstep")]publicvoidGivenFeatureOneSpecificAction(Tabletable){//做某事}}[Binding]publicclassFeatureTwoStep:BaseStep{protectedoverridevoidHandleCustomer(Tabletable){//featuretwoaction}[Given(@"featuretwospecificstep")]publicvoidGivenFeatureTwoSpecificAction(Tabletable){//dosomething}}“Givenhasacustomer”是FeatureOne和FeatureTwo常用的步骤,但是在两个函数中会有不同的处理逻辑。所以我决定把这一步定义放到基类中,分别重写两个派生类中的protected方法。但是,当我运行测试时,出现以下错误:TechTalk.SpecFlow.BindingException:为步骤'GiventhereIsACustomer'找到的步骤定义不明确:CustomerTestBase.GivenThereIsACustomer(Table),CustomerTestBase.GivenThereIsACustomer(Table)谁能告诉我我如何解决这个问题?现在我自己弄明白了,所以有几点说明(希望将来有人可以使用它):答案很简单;不要使用继承来定义绑定。在运行时,SpecFlow通过全局扫描所有公共类以查找具有匹配[Given]属性的方法来查找其方法。这意味着您不能有两个不同的实现。鉴于有客户声明,如果您认为它是一个非常明智的设计决策,将会减少歧义。以上就是C#学习教程的全部内容:Specflow测试步骤继承导致“步骤定义不明确”。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: