SpecFlow无法发现测试,或者我收到错误消息

时间:2019-04-03 08:34:33

标签: c# specflow specrun

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

在SpecFlow入门文档之后,根据我启动的项目类型,我会得到两种不同的结果。

单元测试项目:在这种类型的项目中,跑步者根本无法识别测试。仅“ 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

1 个答案:

答案 0 :(得分: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