SpecFlow 未发现测试或我收到一条错误消息
SpecFlow does not discover tests or I get an error message
对于初学者:我是 Visual Studio 和 SpecFlow 的新手。
根据 SpecFlow 的入门文档,我得到了 2 个不同的结果,具体取决于我开始的项目类型。
单元测试项目:在此类项目中,运行ner 根本无法识别测试。仅 "SpecRun Evaluation" 测试 运行s.
MSTest 测试项目 (.NET Core):在此类项目中,测试总是通过,但我确实在测试输出中收到错误:
"Value cannot be null. Parameter name: message"
这是由 "generator"
引起的
我在典型的 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);
}
}
}
我非常希望测试达到 运行 并在我故意在测试中抛出异常时得到某种反馈。
所有这些只是求职申请的一项任务,但我提供的是生成的默认功能文件,因为这两种情况都会产生这种结果。我已经知道如何完成任务,但我在设置上停留了几个小时...我真的希望这只是我的 stupidity/inexperience.
.csproj: https://codeshare.io/5zxk0W
此答案适用于 SpecFlow 2.*。使用 SpecFlow 3,您只需将 SpecFlow.Tools.MSBuild.Generation
NuGet 包添加到您的项目中。
您错过了启用 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
对于初学者:我是 Visual Studio 和 SpecFlow 的新手。
根据 SpecFlow 的入门文档,我得到了 2 个不同的结果,具体取决于我开始的项目类型。
单元测试项目:在此类项目中,运行ner 根本无法识别测试。仅 "SpecRun Evaluation" 测试 运行s.
MSTest 测试项目 (.NET Core):在此类项目中,测试总是通过,但我确实在测试输出中收到错误: "Value cannot be null. Parameter name: message" 这是由 "generator"
引起的我在典型的 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);
}
}
}
我非常希望测试达到 运行 并在我故意在测试中抛出异常时得到某种反馈。
所有这些只是求职申请的一项任务,但我提供的是生成的默认功能文件,因为这两种情况都会产生这种结果。我已经知道如何完成任务,但我在设置上停留了几个小时...我真的希望这只是我的 stupidity/inexperience.
.csproj: https://codeshare.io/5zxk0W
此答案适用于 SpecFlow 2.*。使用 SpecFlow 3,您只需将 SpecFlow.Tools.MSBuild.Generation
NuGet 包添加到您的项目中。
您错过了启用 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