【问题标题】:Execute SpecFlow specs (.feature files) without compilation无需编译即可执行 SpecFlow 规范(.feature 文件)
【发布时间】:2011-12-14 14:45:54
【问题描述】:

我希望能够在不进行编译的情况下在本地执行给定的 SpecFlow (Gherkin) .feature 文件。

因此工作流程将是(作为业务分析师或 QA 工程师):
1. 修改 .feature 文件(使用预定义的步骤词汇表)
2.运行

SpecFlowSuperTool.exe
    /feature:.\FoobarprojectSpecs.feature
    /assembly:Foobarproject.dll,Foobarproject.Core.dll
  1. 获取报告

目标是能够按需执行功能,而无需重新编译代码,如果只是功能发生了变化。

感觉实现这样一个工具应该是一项非常简单的任务,因为 Gherkin 步骤绑定发生在运行时(根据 SpecFlow 生成的 NUnit 代码判断)。

我知道已经支持 generate->compile->run 场景,但在某些情况下编译步骤似乎是不必要的。

更新 我最终自己编写了该工具。 SpecFlow API 非常简单,构建一个 specflowrunner.exe 非常容易,它可以使用目录或文件 + 配置文件,并直接执行 .feature 文件,而无需先创建单元测试。

【问题讨论】:

  • 我不明白这怎么可能。新场景需要生成新的 NUnit 测试,所以需要编译。对现有场景的更改需要现有测试以不同的顺序运行语句,因此需要更改代码并进行编译。您认为这到底是如何工作的?
  • 不需要生成单元测试。构建一个使用 .feature 文件并直接执行它们的控制台应用程序非常简单,而不是绕道生成单元测试。
  • @THX-1138,你能分享代码吗?我希望 SpecFlow 直接从目录中获取 .feature 文件,而不生成 feature.cs 文件。我对 SO here 有类似的问题
  • @THX-1138 我非常想使用你的工具。我也有同样的想法并寻找可能的实现方式。这是在 Github 上吗?
  • 我可以通过 xUnitAdapter 做到这一点,并在此处记录 rdagumampan.com/post/2018/06/…

标签: specflow


【解决方案1】:

你说的是 SpecFlow.exe ;)

实际上涉及几个步骤和I blogged about it using MsTest about a year ago

基本步骤是:

  1. 使用 SpecFlow.exe(带开关 generateall)从 .feature 文件生成测试。
  2. 运行测试并创建报告。在我的示例中,我使用的是 MsTest,但 NUnit 可以正常工作。
  3. 再次使用 SpecFlow.exe(在我的例子中使用 switch mstestexecutionreport)来生成报告。

非常欢迎您使用my batfiles if you want

祝你好运

【讨论】:

  • 谢谢 Marcus,这一步需要编译。这是我想避免的。我正在寻找更类似于 FIT 的工作流程解决方案。
  • 好的——但是如果你只是跳过我描述的第一步,你可以在不编译的情况下做到这一点。但是你当然必须能够在某个地方访问已编译的 dll。
  • @THX-1138 - 当您编辑功能文件时,规范流会生成 .net 代码。所以更改功能文件会更改代码。
  • @Chat:SpecFlow.exe 确实会生成代码。这就是为什么我要问是否有一种方法可以跳过代码生成步骤来执行规范。生成的代码仅处理各种前/后事件的绑定。各个步骤的绑定仍然在运行时发生。
  • @THX-1138 - 可以以需要首先编译的方式更改功能。编辑器没有逻辑来判断更改是否需要在运行之前进行编译。我相信您可以更改它,以便它仅在您想要运行规范流测试时构建测试项目。但它仍然会强制编译测试项目。
猜你喜欢
  • 2014-12-16
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 2019-12-26
  • 2016-03-22
  • 2014-08-16
  • 2015-03-17
相关资源
最近更新 更多