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()
提前致谢
乔
我最近开始从事一个项目,我想尝试行为驱动开发。我选择 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 上的内容才能完成此测试?
创建全新的功能文件后,我收到以下编译器错误:
该类型已包含“testRunner”的定义
正如标题所说,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) 我正在尝试在我的组织中采用BDD,因为C#.Net是我们的主要开发模式,Specflow是我们对"任何黄瓜"的最佳选择.
但是,我过去曾是一名Spring爱好者,但在我的公司,我们正在将Autofac用于应用程序的各个部分.但是,我找不到任何解释"如何"的资源,可以使用Autofac"触发"Specflow的BDD测试并提供必要的依赖连接.
我计划让Autofac负责实例化,连接和执行所有内容而不是执行Specflow,并且让调用Autofac的方法遍布各处,即使用Autofac作为服务定位器而不是DI/IoC容器.甚至可以这样做,还是我以错误的方式看待它并且有更好的方法来实现同样的目标?或者我应该完全依赖Specflow的"内部容器"进行DI并完全忘记Autofac?
可能的方法:
优点缺点:
我不确定如何实现它们中的任何一个,如果最好让Specflow处理DI并忘记Autofac或让Autofac解雇所有内容或者是否存在中间地带?
当前的BDD设置:Specflow,Selenium/PhantomJS,Xunit.希望与Autofac结合使用.
我第一次使用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)
我遇到了两个问题:
Guid.NewGuid()创建对象一样包含nullList<Country>(). …我是 SpecFlow 的新手,遇到了一个奇怪的问题。
我有一个现有的 SpecFlow 功能和步骤文件。我想添加一个新步骤,当我这样做时,它将新步骤显示为未绑定(紫色)。然后在 Visual Studio 2015 中,我选择了“生成步骤定义”选项,它选择了现有的步骤文件,然后覆盖了该文件,我丢失了所有现有的步骤,但添加了我的新步骤,我如何在不丢失的情况下追加这个新步骤现有的步骤?
谢谢
我有一个基于 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
项目用途:
我正在使用 C# 中的 SpecFlow 编写一个测试用例。当我设置适当的断点并使用调试器运行测试用例时,所有断点都没有被命中。当我将鼠标悬停在它们上方时,会显示一条提示“不会命中断点。尚未为文档加载任何符号”。现在,如何调试我编写的测试用例?
PS:我用的是VS2015