Specflow测试功能和不同项目中的步骤,在使用MsTest运行时失败,但在Visual Studio中传递

时间:2015-02-04 22:43:05

标签: c# specflow

我有一个SpecFlow测试,其功能文件和步骤定义在不同的项目中。它在Visual Studio中运行时传递,但在使用MsTest从命令行运行时失败。

输出错误消息是: 找不到该步骤的匹配步骤定义。使用以下代码创建一个:

 [Given(@"I am a member")]
 public void GivenIAMAMember()
 {
      ScenarioContext.Current.Pending();
 }

测试方法抛出异常: System.IO.FileNotFoundException:无法加载文件或程序集“nunit.framework”或其依赖项之一。系统找不到指定的文件.WRN:程序集绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。 注意:程序集绑定失败日志记录会导致一些性能损失。 要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

任何人都可以给我任何想法吗?

提前谢谢!

1 个答案:

答案 0 :(得分:0)

你的步骤dll可能没有被MSTest加载到内存中,因为没有任何东西引用它。在VS specflow确保它被加载我相信。

你可以强制它被加载,这可能有助于做这样的事情:

  • 在步骤dll中创建一个类。
  • 在项目中使用要素文件
  • 创建一个与生成的测试类specflow同名的部分类
  • 在此分部类中添加一个字段,并从步骤dll将其设置为该类的新实例。

这应该强制将步骤dll加载到测试过程中,因此这些步骤应该是可以发现的。

请注意我没有对此进行测试,只是在我的头顶。

祝你好运。