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

C# 不同项目中的Specflow测试功能和步骤,在使用MsTest运行时失败,但在Visual Studio中通过,c#,specflow,C#,Specflow,我有一个SpecFlow测试,功能文件和步骤定义在不同的项目中。在VisualStudio内运行时通过,但在使用MsTest从命令行运行时失败 输出错误消息为: 找不到该步骤的匹配步骤定义。使用以下代码创建一个: [Given(@"I am a member")] public void GivenIAMAMember() { ScenarioContext.Current.Pending(); } 测试方法引发异常: System.IO.FileNotFoundExcep

我有一个SpecFlow测试,功能文件和步骤定义在不同的项目中。在VisualStudio内运行时通过,但在使用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]

有人能给我一些想法吗


提前谢谢你

MSTest可能没有将steps dll加载到内存中,因为没有任何内容引用它。在VS specflow中,我相信可以确保它已加载

您可以强制加载它,这样做可能会有所帮助:

  • 在steps dll中创建一个类
  • 在项目中,使用功能文件创建与生成的测试类specflow同名的分部类
  • 在此分部类中,添加一个字段,并将其设置为steps dll中该类的新实例
这将强制将步骤dll加载到测试过程中,因此步骤应该是可发现的

请注意,我没有测试这个,它只是我的头顶


祝你好运。

了解如何使用MSTest运行测试也可能很有用。你又在编译了吗?或者在不同的环境中,或者这是在使用VisualStudio生成的文件?我正在使用MsTest在两个程序集所在的同一文件夹(bin文件夹)中运行测试。testcontainer文件正在使用VisualStudio构建的dll。感谢您抽出时间。我会试试。在dll的属性上,副本总是设置为true吗?