为啥 Visual Studio 2015 控制台运行程序无法识别 MSpec?

Posted

技术标签:

【中文标题】为啥 Visual Studio 2015 控制台运行程序无法识别 MSpec?【英文标题】:Why does Visual Studio 2015 console runner not recognize MSpecs?为什么 Visual Studio 2015 控制台运行程序无法识别 MSpec? 【发布时间】:2015-11-20 18:24:55 【问题描述】:

我编写了一些 MSpec,但 Visual Studio (2015) 测试运行程序无法识别它们。我已经使用 NuGet-PM 添加了 Machine.Specifications.Runner.Console 和所有必需的 Machine.Specification-packages。但是当我选择Test->Run Test 时,甚至没有列出包含 mspec 的文件。 Beyond 是我迄今为止编写的 mspecs 的一个示例,它位于一个自己的项目/解决方案中,其中包含一些其他(常规单元)测试,顺便说一句,这些测试都运行良好。

[Subject(typeOf(ControllerForm)]
public class When_file_with_multiple_procedures_is_opened:ControllerFormSpecs

   static ControllerForm subject;
   ...
   Establish context =()=>
   
       subject = new ControllerForm(...);
       path="someRandomPath";
   ;

   Because of =()=>
   
       subject.OpenFile(path);
   

   It should_have_event =()=> subject.eventExist.ShouldBeTrue();

   It should_not_have_data  =()=> subject.currentNode.ShouldBeNull();

   Cleanup after =()=>
   
       subject = null;
   ;
 

我错过了什么?

注意:这里不能选择使用 ReSharper。我知道很多人喜欢它,甚至更多人推荐它,但我的公司已经拒绝了我的要求。

编辑:使用“Machine.Specifications.Console.Runner”,您必须牢记以下几点:

1)将控制台的工作目录更改为存储所有mespc.exe文件的目录(在我的情况下:c:\projects\...\Source\packages\Machine.Specifications.Runner.Console.versionnumber\tools

2) 根据您的调试选项选择正确的 .exe 文件(在我的例子中:mspec-x86.exe

3) 作为参数,您现在必须插入包含 mspec 的项目的 .dll 的相对路径。 (再次作为我的例子: ..\..\..\PluginTests\bin\x86\Debug\PluginTests.dll

【问题讨论】:

跑错了。只是RTFM,它展示了如何使用 mspec.exe 来运行测试。缺乏体面的 VS 集成是你要承担的责任。 我已经阅读了该手册,尽管我希望 VS 能以某种有用的方式集成 mspecs。不需要侵略;) 【参考方案1】:

现在接受的答案已经有几年了,要使用一些 Visual Studio 2019 / Resharper 2019.3.4+ 信息对其进行更新,上述方法对我来说并不成功,而是使用 Resharper 的内置扩展管理器。

在 VS 中,转到:

扩展 -> ReSharper -> 扩展管理器

并搜索/安装“Machine.Specifications for ReSharper”

【讨论】:

【参考方案2】:

如果其他人也在为此苦苦挣扎,使用 https://visualstudiogallery.msdn.microsoft.com/4abcb54b-53b5-4c44-877f-0397556c5c44 Visual Studio 能够识别 mspecs。 但是结果不显示。因此,如果您买不起 ReSharper,我强烈推荐普通的控制台运行器

【讨论】:

现在Machine.VSTestAdapter 是新的更新跑步者。【参考方案3】:

控制台运行器用于从命令行运行规范。您需要安装 Visual Studio MSTest 运行器。

【讨论】:

以上是关于为啥 Visual Studio 2015 控制台运行程序无法识别 MSpec?的主要内容,如果未能解决你的问题,请参考以下文章