为啥 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?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 exe 文件无法从 Visual Studio 2015 的调试或发布文件夹中打开?

为啥大括号缩进在 Visual Studio 2015 中搞砸了?

为啥此代码会使 Visual Studio 2015 崩溃?

为啥 Roslyn 在尝试重写此 lambda 时会崩溃? (Visual Studio 2015 更新 1)

Visual Studio 2015 社区版在线安装为啥这么慢

为啥 Visual Studio 告诉我 AddJsonFile() 方法未定义?