SpecFlow не обнаруживает тесты, или я получаю сообщение об ошибке - PullRequest
0 голосов
/ 03 апреля 2019

Для начала: я новичок в Visual Studio и SpecFlow в целом.

Следуя документации по началу работы с SpecFlow, я получаю 2 разных результата в зависимости от того, какой тип проекта я запускаю.

Модульный тестовый проект: в проектах такого типа тесты вообще не распознаются бегуном.Запускается только тест «SpecRun Evaluation».

Тестовый проект MSTest (.NET Core): в проектах такого типа тесты всегда проходят, но я получаю сообщение об ошибке в выходных данных тестов: «Значение не может бытьnull. Имя параметра: message ", и это вызвано" генератором "

Я делаю все это на типичной Windows 10 Pro.Я пробовал как на VS 2017, так и на 2019. Я попытался повторить весь процесс на случай, если что-то пропустил.Также попробовал обновить пакеты.Что-то, что, возможно, следует отметить, проекты модульных тестов не генерируют файл App.config.

using System;
using TechTalk.SpecFlow;

namespace Tests.Steps
{
    [Binding]
    public class CalculatorSteps
    {
        [Given(@"I have entered (.*) into the calculator")]
        public void GivenIHaveEnteredIntoTheCalculator(int p0)
        {
            Console.WriteLine(p0);
        }

        [Given(@"I have also entered (.*) into the calculator")]
        public void GivenIHaveAlsoEnteredIntoTheCalculator(int p0)
        {
            Console.WriteLine(p0);
        }

        [When(@"I press add")]
        public void WhenIPressAdd()
        {
            Console.WriteLine("add pressed");
        }


        [Then(@"the result should be (.*) on the screen")]
        public void ThenTheResultShouldBeOnTheScreen(int p0)
        {
            Console.WriteLine(p0);
        }

    }
}

Я бы с большой вероятностью ожидал запуска тестов и получения какой-то обратной связи, когда я намеренно выбрасываюисключение в тесте.

Все это всего лишь задача для приложения работы, но я предоставил файл функций по умолчанию, который генерируется, поскольку обе ситуации имеют такой результат.У меня уже есть идея, как выполнить задание, и вот я застрял в Настройке на несколько часов ... Я действительно надеюсь, что это просто моя глупость / неопытность.

.csproj: https://codeshare.io/5zxk0W

1 Ответ

1 голос
/ 04 апреля 2019

Вы пропустили один шаг, чтобы включить интеграцию MSBuild.

Вы должны поместить следующий код в конец csproj в теге.

<Target Name="AfterUpdateFeatureFilesInProject">
    <ItemGroup>
    <Compile Include="**\*.feature.cs" Exclude="@(Compile)" />
    </ItemGroup>
</Target>

Это описано в https://specflow.org/2019/generating-code-behind-files-using-msbuild/ - Включение кода MSBuild за генерацией Классическая система проектов - шаг 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...