SpecFlow在后面生成两个不同的代码,而一个则不起作用

时间:2019-10-08 19:18:31

标签: specflow

在两个不同的SpecFlow功能文件中,我具有相同的步骤,如下所示: enter image description here

右键单击并转到定义时,它们都在一个公共步骤定义文件中转到此位置:

        public void GivenUserNameOf(string userName)
        {
            SetUser(userName);
        }

但是,当我检查文件后面的生成代码时,我看到了两种不同的东西:

 testRunner.Given(string.Format("user name of {0}", userName), ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given ");

正在运行,并且此:

 testRunner.Given("user name of <userName>", ((string)(null)), ((TechTalk.SpecFlow.Table)(null)), "Given ");

之所以失败,是因为传入的字符串是userName(带有尖括号,编辑器认为括号是链接语法,因此我将其省略了),结果是“对象引用未设置为对象”。

我尝试删除功能文件和文件后面的代码并重新创建它们,并尝试删除这些文件和temp文件夹中的缓存文件。每次,文件后面的新功能文件代码仍然包含括号内的文本,而不是应包含的“ {0}”。

关于为什么的任何想法?

1 个答案:

答案 0 :(得分:1)

这两种方案之间的区别是,一个方案是作为方案大纲创建的(一个可行的方案),而另一个方案只是普通方案。当我将方案更改为新的方案大纲时,它也开始起作用。