【问题标题】:MSpec and Visual Studio 2017 integrationMSpec 和 Visual Studio 2017 集成
【发布时间】:2019-07-07 04:22:45
【问题描述】:

我希望能够从 Visual Studio 2017 测试资源管理器运行 MSpec 测试(规范)。我有一个 .NET Framework 4.6.1 项目,我正在使用以下 NuGet 包:Machine.Specifications.Runner.VisualStudio。 我看到测试资源管理器中列出的测试。但是,当我右键单击并选择“运行选定的测试”时,测试会从测试资源管理器中消失并且不会运行。

我看到这个老的question 在 Visual Studio 2015 中处理同样的问题。根据blog post,运行器应该支持测试资源管理器。还是仅在使用 .NET Core 项目时才会出现这种情况?

我想知道选项是否仍然:

  • 使用 ReSharper(或其他插件)
  • 使用控制台运行器(确实有效)

或者我做错了什么。

编辑:我仅在未实施规范的情况下观察我所描述的行为。已实现的规范,无论它们是通过还是失败,都在测试资源管理器中可见。我认为这一定是 MSpec Visual Studio 运行器的错误或预期行为。

【问题讨论】:

    标签: .net visual-studio-2017 mspec


    【解决方案1】:

    我不确定这是否会对您有所帮助,但您可以试一试。

    在几年不使用 MSpec 之后,我重新开始使用它(我在 10 多年前开始使用它......)并且很失望地看到我无法通过测试资源管理器直接在 VSCode 中运行测试(使用 .NET Core 测试资源管理器扩展)。

    我的解决方案是使用 xUnit 创建 shims,通过 xUnit VSTest 适配器运行单个 It 代表每个规范。

    using Machine.Specifications;
    using Machine.Specifications.Model;
    using FluentAssertions;
    using Xunit;
    
    namespace Specs {
    
        [Subject("MSpec from Xunit")]
        public class When_yo_is_set_from_foo {
    
            public When_yo_is_set_from_foo() {
                context();
                of();
            }
    
            static int foo;
            static int yo;
    
            Establish context = () => 
                foo = 10;
    
            Because of = () =>
                yo = foo;
    
            It should_be_10 = () =>
                yo.Should().Be(10);
    
            [Fact]
            public void It_should_be_10() => should_be_10();
        }
    }
    

    这将允许您在 VS(代码或完整)中运行测试,然后您可以单独运行 MSpec 测试作为 CI 的一部分。

    在这里发推文:https://twitter.com/kfinley/status/1111637434289319938

    【讨论】:

      猜你喜欢
      • 2019-06-12
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多