Интеграция MSpec и Visual Studio 2017

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

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

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

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

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

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

0 ответов

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

Я вернулся к использованию 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

Другие вопросы по тегам