Интеграция MSpec и Visual Studio 2017 - PullRequest
0 голосов
/ 13 февраля 2019

Я хотел бы иметь возможность запускать тесты (спецификации) MSpec из Visual Studio 2017 Test Explorer.У меня есть проект .NET Framework 4.6.1, и я использую следующий пакет NuGet: Machine.Specifications.Runner.VisualStudio.Я вижу тесты, перечисленные в Test Explorer.Однако, когда я щелкаю правой кнопкой мыши и выбираю «Запустить выбранные тесты», тесты исчезают из Проводника тестов и не запускаются.

Я видел этот старый вопрос , имеющий дело с той же проблемойв Visual Studio 2015. Согласно сообщению в блоге , бегун должен поддерживать Test Explorer.Или это так только при работе с проектами .NET Core?

Мне интересно, есть ли варианты:

  • использовать ReSharper (или какой-либо другой плагин)
  • используйте консольный бегун (который работает)

или я делаю что-то не так.

РЕДАКТИРОВАТЬ : я наблюдаю поведение, которое я описал только весли спецификация не реализована.Реализованные спецификации, независимо от того, пройдены они или нет, видны в Test Explorer.Я предполагаю, что это должна быть ошибка или, возможно, ожидаемое поведение бегуна MSpec Visual Studio.

1 Ответ

0 голосов
/ 29 марта 2019

Я не уверен, поможет ли это вам, но вы можете дать ему шанс.

Я возвращаюсь к использованию MSpec после нескольких лет его использования (я начал использовать его более 10 лет)назад ...) и был разочарован, увидев, что я не смог запустить тесты непосредственно в VSCode через Test Explorer (используя расширение .NET Core Test Explorer).

Мое решение состоит в создании прокладок с помощью xUnit, которыезапускать отдельные делегаты It для каждой спецификации с помощью адаптера xUnit VSTest.

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

...