我今天第一次尝试使用SpecFlow。我在VS2010 Pro中创建一个新的类库并添加了一个SpecFlow Feature Definition文件。
问题是,集成似乎没有正常工作,出现了各种不同的错误。我选择了MsTest作为测试运行器,因为我不想调用NUnit(长期来看我想使用NUnit,但目前我只想让一些BDD代码工作)。然而生成的代码文件仍然引用NUnit——这显然是错误的,因为我刚告诉SpecFlow要使用MsTest运行。我已经尽我所能再次调用代码生成,包括创建一个全新的类库项目并在Tools > Options > SpecFlow中选择了MsTest选项。
如果我将测试运行器字段设置为“自动”并右键单击一个功能文件,然后选择“运行SpecFlow Scenarios”,我会收到一个错误消息“找不到匹配的测试运行器”。
如果我改为将测试运行器字段设置为MsTest,我在执行相同操作时会收到不同的错误消息:“对象引用没有设置为对象的实例”。我对此并不感到惊讶,因为它仍然试图运行NUnit测试,即使我明确要求使用MsTest,但显然不应该将其nullref并呈现给用户。
我做错了什么?文档没有帮助,据我所见,也没有常见问题解答。
编辑#1:我已经确定我正在寻找的实际设置是使用App.Config
提供的,使用字段<unitTestProvider name="MsTest" />
。我可以看到发生了什么——Visual Studio选项菜单中的字段似乎不会修改您当前正在使用的项目。问题是,这使得它看起来像那个字段根本没有做任何事情。我现在说服了SpecFlow生成MsTest类并使用MSTest运行。
所以现在的问题稍微有点不同:如果有的话,Tools > Options > SpecFlow > Test Runner Tool字段有什么作用?