我有一个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 回答
你的步骤dll很可能没有被MSTest加载到内存中,因为没有任何东西引用它 . 在VS specflow确保它被加载我相信 .
你可以强制它被加载,这可能有助于做这样的事情:
在步骤dll中创建一个类 .
项目中包含要素文件的
创建一个与生成的测试类specflow同名的部分类
在此分部类中添加一个字段,并从步骤dll将其设置为该类的新实例 .
这应该强制将步骤dll加载到测试过程中,因此这些步骤应该是可发现的 .
请注意我没有测试过它,它只是在我的头顶 .
祝好运 .