标签: specflow

SpecFlow - 找不到一个或多个步骤的匹配步骤定义

SpecFlow新手

如果我设置我的Given,When和Then场景并且不传递参数,那么一切正常:

鉴于登录WebQA

 [Given(@"Login to WebQA")]
    public void LoginToWebQA()
    {
Run Code Online (Sandbox Code Playgroud)

Web上的所有读数都表明我所要做的就是更改属性以包含正则表达式,并将参数添加到方法中,如下所示:

 [Given(@"Login to '(.*)'")]
    public void LoginTo(string url)
    {enter code here
Run Code Online (Sandbox Code Playgroud)

但是当我这样做,重新编译并运行测试时,我收到以下错误:

No matching step definition found for one or more steps.
Run Code Online (Sandbox Code Playgroud)

[Binding] public class StepDefinitions {[Given(@"Login to WebQA")] public void GivenLoginToWebQA()

提前致谢

.net bdd specflow

3
推荐指数
1
解决办法
4756
查看次数

SpecFlow 和用户界面测试

我最近开始从事一个项目,我想尝试行为驱动开发。我选择 SpecFlow 作为我的测试框架,因为它是一个 C# 应用程序。根据我在网上阅读的有关该主题的内容,BDD 相对于 TDD 的一个优点是 BDD 可用于测试用户界面。但是,我在使用 SpecFlow 执行此操作时遇到了一些麻烦。对于我的第一次测试,我想编写以下功能:

用户单击一个按钮,会出现一个文件夹浏览对话框,选择一个文件夹后,应用程序会在该文件夹中搜索与应用程序相关的文件,并将这些文件加载​​到应用程序中。

下面的场景或多或少是我想写的:

 Scenario: Add Model
 Given I am on the main screen
 When I click Add Model
 And select a folder
 And the folder contains a model
 Then the model is loaded into the application
Run Code Online (Sandbox Code Playgroud)

我需要什么代码才能让 SpecFlow 单击该 FolderBrowseDialog 上的内容才能完成此测试?

specflow

3
推荐指数
1
解决办法
5099
查看次数

SpecFlow - 该类型已包含“testRunner”的定义

创建全新的功能文件后,我收到以下编译器错误:

该类型已包含“testRunner”的定义

c# specflow

3
推荐指数
1
解决办法
1266
查看次数

Specflow 如何处理多个参数?

正如标题所说,specflow 如何处理这个问题

x = AddUp(2, 3)
x = AddUp(5, 7, 8, 2)
x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)
Run Code Online (Sandbox Code Playgroud)

我给出的链接是通常的做法。我想知道的是顶部的注释应该是什么?

[Then(@"What should I write here")]
public static void AddUp(params int[] values)
{
   int sum = 0;
   foreach (int value in values)
   {
      sum += value;
   }
   return sum;
}
Run Code Online (Sandbox Code Playgroud)

c# parameters bdd specflow

3
推荐指数
1
解决办法
1万
查看次数

(如何)使用Autofac作为IoC容器运行Specflow测试用例?

我正在尝试在我的组织中采用BDD,因为C#.Net是我们的主要开发模式,Specflow是我们对"任何黄瓜"的最佳选择.

但是,我过去曾是一名Spring爱好者,但在我的公司,我们正在将Autofac用于应用程序的各个部分.但是,我找不到任何解释"如何"的资源,可以使用Autofac"触发"Specflow的BDD测试并提供必要的依赖连接.

我计划让Autofac负责实例化,连接和执行所有内容而不是执行Specflow,并且让调用Autofac的方法遍布各处,即使用Autofac作为服务定位器而不是DI/IoC容器.甚至可以这样做,还是我以错误的方式看待它并且有更好的方法来实现同样的目标?或者我应该完全依赖Specflow的"内部容器"进行DI并完全忘记Autofac?

可能的方法:

  1. 让Autofac实例化并连接所有内容并运行Specflow测试(不确定这是否可行/推荐).
  2. 让Specflow全局实例化Autofac,它与其余代码的必要依赖关系相连.可能的步骤定义可能会使用Autofac作为工厂来获得他们需要的东西.

优点缺点:

  1. 第一种方法是理想的,因为它可以防止从Specflow到Autofac的任何依赖.前者忘记了后者.完全透明.首选,但不知道如何去做.
  2. 如果Autofac可以由Specflow全局实例化一次以供稍后使用,则后一种方法"可以"工作.但这会导致在将两个库耦合在一起的步骤定义中对Autofac进行大量调用.不太可取.

我不确定如何实现它们中的任何一个,如果最好让Specflow处理DI并忘记Autofac或让Autofac解雇所有内容或者是否存在中间地带?

当前的BDD设置:Specflow,Selenium/PhantomJS,Xunit.希望与Autofac结合使用.

c# ioc-container autofac specflow

3
推荐指数
1
解决办法
2576
查看次数

如何使用SpecFlow中的table.CreateSet <>(myClass)()生成缺失值?

我第一次使用SpecFlow为我的项目编写测试,我遇到了一个小问题.

我有下一堂课:

public class FancyName
{
    [DataMember]
    public Guid Guid { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public List <Country> Countries { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想在我的测试中使用SpecFlow助手生成这个类.

以下是场景的一部分:

[...]
When i add some names
    | Name | Countries |
    | UK   | 1         |
    | US   | 2         |
[...]
Run Code Online (Sandbox Code Playgroud)

我尝试在步骤定义中解析它,如下所示:

[When(@"I add some names")]
public void AddNames(Table table)
{
    var names = table.CreateSet<FancyName>();
    [...]
}
Run Code Online (Sandbox Code Playgroud)

我遇到了两个问题:

  1. 我没有传递Guid,因为想要生成它就像Guid.NewGuid()创建对象一样包含null
  2. 我通过国家排序,但我需要创建List<Country>(). …

c# bdd specflow

3
推荐指数
1
解决办法
719
查看次数

Specflow 向现有特征文件添加新步骤

我是 SpecFlow 的新手,遇到了一个奇怪的问题。

我有一个现有的 SpecFlow 功能和步骤文件。我想添加一个新步骤,当我这样做时,它将新步骤显示为未绑定(紫色)。然后在 Visual Studio 2015 中,我选择了“生成步骤定义”选项,它选择了现有的步骤文件,然后覆盖了该文件,我丢失了所有现有的步骤,但添加了我的新步骤,我如何在不丢失的情况下追加这个新步骤现有的步骤?

谢谢

specflow

3
推荐指数
1
解决办法
1986
查看次数

SpecFlow 项目加载失败

我有一个基于 SpecFlow 的测试项目。有时会出现一个问题,即工作源代码(适用于其他计算机和构建服务器)无法在 Visual Studio 2015 中加载,并load failed在解决方案资源管理器中显示信息,并在输出控制台上显示以下错误消息:

C:\Project\Tests.csproj : error : The imported project "C:\Project\packages\SpecFlow.2.1.0\tools\TechTalk.SpecFlow.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. C:\Project\Tests.csproj

项目用途:

  • SpecFlow for Visual Studio 2015(VS 扩展)
  • SpecFlow(nuget 包)

build visual-studio specflow

3
推荐指数
1
解决办法
750
查看次数

Specflow 中未命中断点

我正在使用 C# 中的 SpecFlow 编写一个测试用例。当我设置适当的断点并使用调试器运行测试用例时,所有断点都没有被命中。当我将鼠标悬停在它们上方时,会显示一条提示“不会命中断点。尚未为文档加载任何符号”。现在,如何调试我编写的测试用例?

PS:我用的是VS2015

c# visual-studio specflow

3
推荐指数
1
解决办法
3338
查看次数

如何非并行地一个接一个地运行 Specflow 测试

我正在从 Visual Studio 运行 C# Specflow 测试。当我运行时,我看到测试正在并行执行。我怎样才能让他们一个接一个地运行?我附上以青色突出显示的快照。我正在寻找一种方法来依次运行它们。我正在使用 Specflow.AssistDynamic 和 Techtalk.Specflow在此输入图像描述

c# execution specflow

3
推荐指数
1
解决办法
4812
查看次数

标签 统计

specflow ×10

c# ×6

bdd ×3

visual-studio ×2

.net ×1

autofac ×1

build ×1

execution ×1

ioc-container ×1

parameters ×1