首页 > 解决方案 > MSpec 和 Visual Studio 2017 集成

问题描述

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

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

我想知道选项是否仍然:

或者我做错了什么。

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

标签: .netvisual-studio-2017mspec

解决方案


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

在几年不使用 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


推荐阅读