在两个不同的SpecFlow功能文件中,我具有相同的步骤,如下所示:
右键单击并转到定义时,它们都在一个公共步骤定义文件中转到此位置:
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}”。
关于为什么的任何想法?
答案 0 :(得分:1)
这两种方案之间的区别是,一个方案是作为方案大纲创建的(一个可行的方案),而另一个方案只是普通方案。当我将方案更改为新的方案大纲时,它也开始起作用。