我在我的C#Specflow测试项目中至少有3个.feature文件,例如:
Given I am at the Home Page
当我第一次在文件中编写步骤Feateure1.feature并创建步骤方法时,我将它放在一个步骤文件中,比方说Steps1.cs,它继承自初始化a的基类FirefoxDriver.我的所有StepsXXXX.cs类都继承自这个基类.
然后,我写了Feature2.feature,这也有一步Given I am at the Home Page.而且这个步骤是自动绑定的Steps1.cs
"直到现在,没问题.这就是我想要的 - 在整个测试项目中拥有可重复使用的步骤.但问题是,每当我运行一个包含不同StepsXXXX文件步骤的场景时,我就会运行各种浏览器实例.
======
我很确定这是因为我的StepsXXXX(绑定类)都继承自这个具有自己的IWebDriver的基类,并且在调用步骤时,其他所有内容(包括之前/之后的场景方法)都是调用.但我无法弄清楚如何解决这个问题.
我仍然想要可重复使用的步骤.我试图将这些步骤放在基类中,但它不起作用.我也考虑过更改绑定,但是specflow使用有意义的字符串来执行此操作,我不想将它们更改为误导性字符串.
有没有人偶然发现了这个?任何帮助都非常感谢.
我正在查看SpecFlow示例,它的MVC示例包含几个测试选项:
我必须说我对SpecFlow示例的编写方式印象深刻(我设法在下载后几分钟内运行它们,只需配置数据库并安装Selenium Remote Control服务器).看看测试方案,我可以看到它们中的大多数相互补充而不是替代方案.我可以想到以下这些测试的组合:
如果您在Web开发中使用SpecFlow,Cucumber或其他BDD验收测试框架,请与您分享您在不同测试类型之间进行选择的实践.
提前致谢.
我有一个场景大纲(又称场景模板),我希望使用VS 2012的测试资源管理器列出我的测试.默认的测试分组是通过"项目"名称完成的 - 如果我坚持使用,我的测试来自场景大纲是在"外部"组中,而不是在我的项目组中.
为什么会这样,是否有解决方案/解决方法?
我的情况是我想使用Test Explorer运行给定项目的所有测试.为所有人设置相同的特性是愚蠢的,容易出现人为错误.
我的解决方案有10个这样的项目,很快就会有更多的项目被添加到其中.因此,在"外部"下保持项目的场景概述测试可能会导致任何人错过它们或者获取属于另一个项目的场景轮廓生成的测试.
UPDATE
GitHub用户Shashi(https://github.com/shashiprabhakar)已向SpecFlow贡献者发出了一个问题:https://github.com/techtalk/SpecFlow/issues/275.非常感谢,伙伴们!我已开始跟踪它,所以如果在那里提出修复/解决方法,我会在此处将其作为答案发布.
我们正在尝试在我们的specflow测试中实现全局挂钩,并且不完全确定方法[BeforeScenario]和[AfterScenario]属性如何工作.
我看到它完成的方式,这些属性总是在包含几个场景中使用的特定步骤的类中定义.
他们可以去某个地方,以便适用于所有场景吗?或者根本归因与方法[BeforeScenario],并[AfterScenario]导致他们对所有情景下运行,无论在哪里,他们实际上是放在哪里?
Async/Await支持Specflow Steps =>我想使用SpecFlow和C#的异步等待功能,windows phone 8,带有MSTest的SpecFlow可以使用async/await执行代码,但不等待结果.
我已经更改了BindingInvoker.cs并升级到.NET 4,以便支持异步任务,并且现在接收IOC不是初始化错误.
https://github.com/robfe/SpecFlow/commit/507368327341e71b2f5e2a4a1b7757e0f4fb809d
我目前正在研究(理想情况下无头)asp.net mvc 5的集成测试框架(可能与同一项目中的webapi).我知道这两个:
还有其他人吗?我对任何与specflow配合良好的框架特别感兴趣.
asp.net-mvc integration-testing specflow asp.net-web-api asp.net-mvc-5
我在Visual Studio 2013中使用SpecFlow进行单元测试,当我从Test Explorer窗口运行测试时,会有一个指向Output的链接,该链接显示在测试期间写入控制台的任何内容.

右键单击选项卡时,我没有像打开其他项目文件那样打开包含文件夹的选项.

这是一个被保存在某个地方的文件吗?我可以在某处访问它,还是应该手动编写代码以将其保存到已知位置?
我试图找到答案为什么在黄瓜甚至黄瓜是单独的BDD工具需要specflow.
我们应该在.NET项目中直接使用黄瓜
使用 Specflow 2.1、NUnit 3.4 和 Visual Studio 2015,我正在修复将我的源代码提交到 git。当我到达Foobar.feature.cs它时说它是自动生成的。我在 csproj 文件中看到它被编译(有意义)并且它取决于功能文件,并且它是生成的。
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Foobar.feature.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Foobar.feature</DependentUpon>
</Compile>
<Compile Include="FoobarSteps.cs" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
<None Include="packages.config" />
<None Include="Foobar.feature">
<Generator>SpecFlowSingleFileGenerator</Generator>
<LastGenOutput>Foobar.feature.cs</LastGenOutput>
</None>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
所以没有什么不寻常的地方。在我的代码被推入 origin/master 后,我们将启动 jenkins 构建,所以出于好奇,我将 feature.cs 文件移出,尝试构建,但由于缺少文件,构建失败。我打开了功能文件,没有做任何更改,但点击保存(以便生成器创建文件),现在构建再次工作。
有没有解决的办法?当可以生成时,我宁愿不在源代码中自动生成代码。
我尝试在测试资源管理器中运行多个 Specflow 测试,但挑战是我无法按所需的顺序运行它们。
ex - 我的功能文件中有 3 个场景:
目前,它们以随机顺序运行。我希望它们始终按上述顺序运行。我如何配置我的功能文件以使其成为可能?