SpecFlow没有发现测试或我收到错误消息

问题描述 投票:0回答:1

对于初学者:我是Visual Studio和SpecFlow的新手。

根据SpecFlow的入门文档,我得到2个不同的结果,具体取决于我开始的项目类型。

单元测试项目:在这种类型的项目中,测试者根本不被运动员识别。仅运行“SpecRun评估”测试。

MSTest测试项目(.NET Core):在这种类型的项目中,测试总是通过,但我在测试输出中出现错误:“值不能为空。参数名称:消息”,这是由“生成器”引起的

我在典型的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

c# specflow specrun
1个回答
1
投票

您错过了一步启用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

© www.soinside.com 2019 - 2024. All rights reserved.