过去几天我一直在玩SpecFlow.在那段时间里,我意识到我应该为这些系统编写质量规格.
有人能指出一些资源,其中包含有关为SpecFlow或类似工具创建质量规范的最佳实践吗?
我们最近升级到v1.7.1,但我们的@Tags不再生成[Microsoft.Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("MyTag")]我们成功使用测试类别所必需的Visual Studio属性.
@ignore标记仍然会生成IgnoreAttribute - 因此SpecFlow解析器可以运行.此外,标记值也会添加到TechTalk.SpecFlow.ScenarioInfo值中.
我们需要设置其他设置吗?
我们在Win7 Ent上使用VS2010 SP1.
抢.
随着我正在开展的项目的不断发展,测试的数量也在不断增加.但是,就我而言,当测试的场景数量增加时,Specflow的稳定性似乎在下降.
让我试着澄清一下:例如,当我在Visual Studio 2010中运行一些测试列表(有5到10个场景)时,所有场景都在传递.但是,当我一次运行所有测试列表(类似于70个场景的总计)时,某些场景失败,在"单独的测试列表运行"中通过了.当我再次立即运行"总测试运行"时,不同的方案失败,或者有时所有文件都通过.换句话说,哪种情况失败是完全随机的.
是否有人熟悉这个问题和/或当测试的场景数量增加时,可以启发我关于Specflow的稳定性(看起来是什么样的)?
对于我的生活,我无法让SpecFlow配置为使用NUnit作为测试运行器.NUnit未在工具>选项> SpecFlow测试运行器下拉列表中列出,并且"auto"设置未找到NUnit.
我尝试过多次重新安装NUnit和SpecFlow.尝试安装SpecFlow 1.8.1和1.9无济于事.尝试使用app.config.我甚至尝试重新安装Visual Studio 2010.
我只想让SpecFlow使用NUnit(2.6.1).有人可以帮忙吗?
我使用SpecFlow与硒的webdriver和SpecRun为测试运行,以创建和执行自动化测试案例,我正在寻找一个解决方案,在插入测试执行报告截图.
我写了一个方法来在每个Assert函数后创建截图.图像保存到特定位置,但是当我进行结果分析时,我必须遵循报告和图像.将它们放在同一位置(恰好在报告html中)会很不错.
有没有办法执行此操作(类似于控制台输出)?
对于我的SpecFlow测试,我想在测试执行期间设置测试进度的单独记录/跟踪.我想写
到Windows事件日志(以便在测试期间将其与其他系统组件生成的事件日志消息同步).
我尝试使用[BeforeFeature],[BeforeScenario],[BeforeStep] Hooks来做这件事,但事实证明我在这个钩子中没有所有必需的信息.例如,我不知道如何获取当前步骤的当前文本行(包括行信息等)或当前步骤的结果(失败/通过).
有没有办法在执行测试期间在这些钩子中或以任何其他方式获取此信息?
如果不是:有没有办法以任何其他方式自定义Specflow创建的跟踪输出?
我有一些在我的功能文件中编写的方案,其中包含断言.如果第一个场景未通过断言,则Specflow将跳过其后的所有场景.我希望我的所有场景都能继续运行,即使它们在NUnit中失败也是如此.我使用SpecRun作为测试提供者,我在SpecFlow网站上找不到任何可以帮助我的东西.可能是我在App.config文件中遗漏了什么?
以下是我的App.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" />
</configSections>
<specFlow>
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
<unitTestProvider name="SpecRun" />
<!-- setting flag to continue on first assert error -->
<runtime stopAtFirstError="false" />
<plugins>
<add name="SpecRun" />
</plugins>
</specFlow>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我目前正在使用specflow进行单元测试,但是我的复杂性在于我想在运行测试之前从excel电子表格中读取(检索)我的输入数据.
例如:
当我XXXXX用产品编号获得客户产品时1234567
然后返回以下产品详细信息
| Model | Product Type | SerialNumber |
| blah | zzzzz | 12345 |
Run Code Online (Sandbox Code Playgroud)
所以我希望基本上能够通过读取execel文件并写入我的功能文件来更改输入数据.这是否已经完成,是否可能?我需要安装某种插件吗?
我们使用Specflow,目前,我们的大多数断言都是使用Fluent Assertions完成的,例如:
myval.Should().NotBe(null)
一切都运行良好,但在某些情况下,我们希望相同的代码有时断言不确定,有时不会.
例如,假设我们有一个调用方法来安装AUT的步骤.
断言AUT可以正确安装的测试将使用此方法作为WHEN/THEN步骤的一部分.
在这种情况下,如果安装失败,我们希望正常进行并且无法通过测试.
GIVEN The AUT is NOT installed
WHEN I install the AUT
但是,对于所有其他测试,可以将相同的方法作为GIVEN步骤的一部分或作为BeforeScenario/BeforeFeature挂钩的一部分调用,并且在该实例中,如果安装失败,则测试应该失败,因为它是不是测试本身失败,而是安装阶段.
GIVEN the AUT is installed
WHEN I perform function X of the AUT
所以在这个例子中,让我们假设WHEN I install the AUT第一个测试中的步骤定义,以及GIVEN the AUT is installed第二个测试中的步骤定义只是用类似的东西调用辅助方法AppFacade.Install()
当然,我们可以AppFacade.Install()使用条件等垃圾和所有其他辅助方法,但我想知道是否有人有更优雅的解决方案 - 即扩展断言引擎的方式,以便它自动应用这个逻辑 - 我看到没有障碍实现此目的的Specflow方面,您可以检查Specflow上下文对象以检测您所处的步骤类型.
理想情况下,我们希望坚持使用流利断言,但如果这过于复杂化,我们会愿意重新考虑.
我正在为文本文件生成内容并尝试使用SpecFlow表测试输出.我的Then陈述如下:
Then the content should be
| Line |
| This is Line 1 |
| This is Line 2 |
| etc... |
Run Code Online (Sandbox Code Playgroud)
我将这变成Step文件中的一个字符串数组,如下所示:
[Then(@"the content should be")]
public void ThenTheContentShouldBe(Table table)
{
string[] expectedLines = table.Rows.Select(x => x.Values.FirstOrDefault()).ToArray();
...
}
Run Code Online (Sandbox Code Playgroud)
这将给我一个包含3个元素的字符串数组,忽略第一个"Line"作为表头.但感觉有点尴尬.有没有更好的方法将其变成一个数组string?奖励点如果它也可以转换成数组不可变类型,如int等.