问题标签 [specflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
3165 浏览

.net - 处理 SpecFlow 中的多个细微变化

大家好 我们正在开发一个可通过 SOAP 和 REST(xml 和 JSon)获得的 Web 服务。我们的 specflow 功能基本相同,即:

所有这些特性都需要针对 SOAP 接口、REST/Xml 接口和 REST/JSon 接口进行测试。

在 cucumber 中,可以使用 -R 来运行功能来指示步骤文件的位置,但是在 SpecFlow 中,我还没有找到绕过步骤文件的方法,因此我可以让相同的功能运行不同的步骤。

我宁愿不必为每个场景编写 3 次以更改要使用的步骤实现。

所以,有两个问题:1)我如何为预期完全相同的场景的 3 个不同接口运行 3 次功能?2)如何每次选择正确的步骤文件?

解决(1)可能会解决(2)。

0 投票
4 回答
5934 浏览

visual-studio-2010 - SpecFlow - 运行并行测试

我正在使用 SpecFlow 实现彼此无关的测试。SpecFlow 是否有启用并行测试执行的配置选项?我正在使用支持运行“最多 5 个并行单元测试”的 VS10 和 MSTest 运行程序,正如他们在文档中所声称的那样。

谢谢,max.yz

0 投票
1 回答
1336 浏览

.net - SpecFlow 测试因访问被拒绝异常而失败

在启动并运行 Orchard CMS 并检查到我们的 Subversion 存储库后,我一直在查看现有的测试覆盖率,特别是 SpecFlow 测试。

当我尝试从 CodeRush 测试运行器或 NUnit GUI (v2.5.10) 运行测试时,有 67 个测试出现异常:

我曾尝试以管理员身份执行测试,但是我了解 SpecFlow 的真正知识,所以我怀疑我遗漏了一些关键的东西。

0 投票
0 回答
2315 浏览

nunit - Windows Server 2008 R2 上的 SpecFlow + WatiN + NUnit + TeamCity

我最近在设置全自动夜间构建/测试/部署环境时遇到了一些麻烦。简要说明设置。我们使用 Mercurial 作为源代码控制系统,使用 TeamCity 作为构建服务器。它目前在单独的机器上只有一个构建代理,以保持简单。

想法如下:每天晚上运行一个 TeamCity 构建。从 Mercurial 存储库中提取最新信息,运行构建,运行单元测试,部署到测试服务器,针对新部署的测试服务器运行验收测试(在构建代理上),如果所有这些都通过,则将批次部署到临时服务器。除了验收测试之外,我已经完成了所有工作。这些是通过 SpecFlow 和 WatiN 完成的。Everyhting 在开发机器(Windows 7 32 位)上运行良好。但是,当我尝试运行验收测试(TeamCity 中的 NUnit)时,由于步骤 [Browser].ContainsText(browserText),运行器报告失败。所有步骤都正确运行,如果我在构建代理上的同一浏览器中复制这些步骤(获得完全的管理员访问权限),我可以看到存在的文本。因此,据我所知,测试应该通过。

我发现这个stackoverflow 线程让我觉得我可能在保留浏览器实例的方式上做错了。解释一下:我有一组常见的步骤,例如“当我单击 X 按钮时”或“当我在字段 Y 中输入文本 X 时”和一个有问题的“然后我显示 X”。因为我尽可能地使测试可重用,所以我还概括了 @requires_browser 场景要求,然后定义如下:

然后是共同步骤:

由此我可以定义在文本框中输入文本、单击按钮等的其他常见步骤。所有这一切都在开发环境中完美运行,在 Visual Studio 2010 [作为管理员] 中运行。

我认为应该保留 ScenarioContext 直到测试完成,我错了吗?

到目前为止我已经尝试过:

  1. 将构建代理服务配置为作为本地系统 (SYSTEM) 运行。这会导致所描述的问题 - ThenIAmShown(string text) 方法将始终失败。它启用了与本地桌面的交互。

  2. 将构建代理服务配置为以网络管理员身份运行(完全管理员权限)。此设置甚至不会运行测试。我得到的例外:

    TearDown 方法失败。WatiN.Core.Exceptions.BrowserNotFoundException:找不到匹配约束的 IE 窗口:等待附加到新创建的 IE 实例时超时。搜索在“30”秒后过期。TearDown : System.Collections.Generic.KeyNotFoundException : 给定的键不在字典中。在 WatiN.Core.IE.CreateIEPartiallyInitializedInNewProcess() 在 WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri, IDialogHandler logonDialogHandler, Boolean createInNewProcess) ...

  3. 已将程序集 Interop.SHDocVw.dll 和 Microsoft.mshtml.dll 添加到 bin 目录(项目引用中的复制到输出)。

  4. 从构建代理运行 NUnit UI。这将按预期运行单元测试。让我相信安全可能存在问题。在 Windows Server 2008 R2 Enterprise 上运行 NUnit 2.0.5。

有人有这个问题吗?

0 投票
1 回答
579 浏览

asp.net-mvc-2 - 带有 MVC 模型验证问题的 Specflow

在学习 SpecFlow 时,我正在使用 Specflow、nunit 和 moq 来测试默认的 MVC2 应用程序注册。

我有以下步骤来检查是否没有输入用户名和密码。

脚步

强制验证的扩展方法

我不明白为什么密码丢失测试在以下几行中失败。

我注意到返回的错误消息是密码和 ConfirmPassword 不匹配,但我不明白为什么所有其他测试,包括 Missing Confirm Password 测试(与 Missing Password 测试相同)它们工作正常。

有任何想法吗?

特征

  • 场景:如果用户名丢失,注册应该返回错误
  • 给定用户尚未输入用户名
  • 当他点击注册按钮时
  • 然后应该向他显示错误消息“用户名字段是必需的”。“用户名”

  • 场景:如果密码丢失,注册应该返回错误

  • 给定用户尚未输入密码
  • 当他点击注册按钮时
  • 然后应该向他显示错误消息“'密码'必须至少有 6 个字符长。” “密码”

更新 好的,帐户模型中的 ValidatePasswordLengthAttribute 似乎无法初始化Membership.Provider,因为我的 app.config 中没有连接字符串。Pembership.Provider 现在是否连接到会员数据库?

我添加了连接字符串,但现在测试通过了 50% 的时间,因为它返回两个错误:

  • 需要密码
  • 密码长度必须为 6 个字符。

问题是它们不是每次都以相同的顺序返回,所以测试很不稳定。我该如何重写我的场景和测试来解决这个问题?我仍然可以保留一个“Then”方法还是需要创建一个新方法?

谢谢。

0 投票
3 回答
2559 浏览

database - 使用 specflow 在验收测试中清理数据库

我是tdd的新手。我看过 Brandon Satrom 的视频。我正在尝试实现像它们这样的测试,用于验收测试的外循环和用于单元测试的内循环。我认为验收测试也是针对数据库的。所以我希望在 Specflow 中找到有关 [BeginScenario/AfterScenario] 事件的示例,用于数据库清理。据说它用于数据库清理。但是我看到的例子都没有。

我误解了验收测试的概念吗?它不也涵盖数据库吗?我们应该像在单元测试中那样使用模拟对象吗?

0 投票
2 回答
203 浏览

cucumber - 如何检查黄瓜没有任何变化?

我尝试使用 cucumber/gherkin(实际上是 specflow)测试的业务场景是,给定 Web 表单上的一组输入,我提出请求,并且需要确保(在某些条件下)结果是返回时,一个特定的字段没有改变(在其他条件下,它确实)。例如

鉴于我在数据输入屏幕上当我选择“不更新 frobnicator”并提交表单并显示结果然后 frobnicator 没有更新

我将如何编写“fobnicator 未更新”步骤?

一种选择是在“我提交表单”之前运行一个步骤,其内容类似于“我记得 frobnicator 的值”,但这有点垃圾 - 这是实现细节的可怕泄漏。它分散了测试的注意力,并且不是业务描述的方式。事实上,任何人看到这样的台词,我都必须解释它。

有没有人对如何更好地实现这一点有任何想法,理想情况下是书面的?

0 投票
3 回答
11596 浏览

c# - SpecFlow 特征文件中的多个多行示例

这似乎是那些问题之一,如果你知道答案,那是显而易见的,如果你不知道,那是不可能的......

如何在 SpecFlow 功能文件中包含多行示例表?

我的例子是:

提前致谢。

0 投票
4 回答
18784 浏览

cucumber - 我在哪里可以找到 Gherkin 语言规范/指南?

我正在尝试找出 Gherkin 中所有可用的语法/格式,例如关于多行参数以及我还不知道的所有其他内容。

不过,在挖掘 Google 搜索结果之后,似乎综合指南位于此处

我认为这很好,有一个链接到一个据称描述多行参数和其他参数的页面,但它把我带到了 404 Not found 相反 =(.

有没有人有更好的建议在哪里阅读这个?

编辑:强调我已经做了很多谷歌搜索。它提供了一些相当不错的站点,例如specflowcuke4ninja,但没有一个提供对 Gherkin 的全面描述。如果有人通过谷歌搜索找到了这个问题的答案,那么请随时称我为谷歌新手,欢迎提出改进建议。

0 投票
1 回答
392 浏览

specflow - Specflow 生成的代码不正确?

我最近开始使用 Specflow,并根据他们网站 [1] 上的示例生成测试用例。但是,生成的代码无法编译。例如,“Given a new bowling game”行,生成以下内容:

但是, ITestRunner.Given() 的签名是:

这同样适用于When()、And() 和 Then()。似乎绑定步骤定义也需要一个string参数,这似乎没有记录。

还有其他人有同样的问题吗?我下载了 Specflow 1.6.1,并且正在使用 VS2005。

谢谢,
丹尼尔 B.
[1] http://specflow.org/specflow/workflow.aspx