我正在 Visual Studio 2019 中进行 SpecFlow 测试。添加功能文件时不会生成设计器文件 (.cs)。
适用于具有类似配置和 nuget 包的其他计算机。
设计器文件应该自动生成。
我正在学习SpecFlow并且正在做一个简单的Com-Sci标准FizzBuzz项目.给定一系列数字替换可被3整除,Fizz替换可被5整除,Buzz替换可被3和5整除,使用FizzBuzz.
这是一个非常简单的应用程序,但它确实为我提出了一个问题.如何编写功能来测试多个requiremts,它们都是通过API上的一个方法调用触发的?例如FizzBuzz.Replace(1, 100);
,使用Replace方法代码,API调用如下所示
public static string Replace (int min, int max)
{
if (IsDiv3 && IsDiv5) {...}
if (IsDiv3) {...}
if (IsDiv5) {...}
...
}
Run Code Online (Sandbox Code Playgroud)
我在SpecFlow中的功能如下:
Feature: FizzBuzz
In order to display Fizz Buzz in range of numbers
As a user I want to be able to see Fizz Buzz replace certain numbers
Scenario: Replace muliples of three and five with Fizz, Buzz or FizzBuzz
Given I have a range of numbers from 1 to 15
When I …Run Code Online (Sandbox Code Playgroud) 我打算使用Specflow for .NET.我来自RoR背景,我使用过Cucumber和Capybara.据我所知,Specflow类似于Cucumber; 但是,它是否具有Capybara提供的功能?
谢谢!
有人可以向我解释为什么在下面的.Net Specflow代码中,如果我的textboxElement的文本为空,那么我发送密钥给它,为什么文本仍然是空的?(当屏幕上文本框的文本发生变化时):
textboxElement.SendKeys("John Smith");
var text = textboxElement.Text;
// text == ""
Run Code Online (Sandbox Code Playgroud)
是否无法"刷新"元素的值?(或者我只是错过了一些非常明显的东西:-))
我正在测试用.NET Backend和AngularJS前端编写的应用程序.使用Selenium编写一些自动化测试和specflow集成(C#).
我已经完成了初始设置,但我遇到的最大困难之一就是检测动态Web元素.由于应用程序使用的是Angular,因此除非我尝试使用XPath,否则无法轻松识别大多数元素.Selenium不支持化合物类名称,即"class ="ng-pristine ng-valid ng-touching""并且ID不断变化.
有没有更好的方法呢?还是我可以用来让我的生活更轻松的图书馆?
任何输入赞赏:)
selenium automated-tests specflow angularjs selenium-webdriver
所以我继承了这个用于Android的Xamarin应用程序的测试平台,该应用程序用C#编写,用于Specflow.我对Xamarin一无所知,对Specflow知之甚少,自从我在C#编写任何代码以来已经10年了,所以请耐心等待.试图创建一个继承自Button的类,我得到这个错误:
There is no argument given that corresponds to the required formal parameter 'controlIdQuery' of 'Button.Button(Func <AppQuery, AppQuery>)'
Run Code Online (Sandbox Code Playgroud)
我的派生类看起来像这样:
public class Buttons : Button
{
}
Run Code Online (Sandbox Code Playgroud)
Button类看起来像这样:
public class Button : ControlBase
{
public Button(Func<AppQuery, AppQuery> controlIdQuery) : base(controlIdQuery) { }
}
Run Code Online (Sandbox Code Playgroud)
另外,按钮的ControlBase看起来像这样:
public abstract class ControlBase : AppBase
{
public Func<AppQuery, AppQuery> controlIdQuery;
public AppResult[] _appresult;
public static IApp _appelement;
public string _methodName;
public object _argument;
public bool waiting;
public static Platform _appPlatform;
public ControlBase(Func<AppQuery, AppQuery> idQuery)
{
} …Run Code Online (Sandbox Code Playgroud) 对于初学者:我总体来说是 Visual Studio 和 SpecFlow 的新手。
根据 SpecFlow 的入门文档,我得到了 2 个不同的结果,具体取决于我启动的项目类型。
单元测试项目:在此类项目中,运行者根本无法识别测试。仅运行“SpecRun评估”测试。
MSTest 测试项目(.NET Core):在这种类型的项目中,测试总是通过,但我确实在测试输出中收到错误:“值不能为空。参数名称:消息”,这是由“生成器”引起的
我在典型的 Windows 10 Pro 上完成所有这些操作。我在 VS 2017 和 2019 上都尝试过。我尝试过重新执行整个过程,以防我错过了什么。还尝试更新软件包。也许应该注意的是,单元测试项目不会生成 App.config 文件。
using System;
using TechTalk.SpecFlow;
namespace Tests.Steps
{
[Binding]
public class CalculatorSteps
{
[Given(@"I have entered (.*) into the calculator")]
public void GivenIHaveEnteredIntoTheCalculator(int p0)
{
Console.WriteLine(p0);
}
[Given(@"I have also entered (.*) into the calculator")]
public void GivenIHaveAlsoEnteredIntoTheCalculator(int p0)
{
Console.WriteLine(p0);
}
[When(@"I press add")]
public void WhenIPressAdd()
{
Console.WriteLine("add pressed");
}
[Then(@"the result …Run Code Online (Sandbox Code Playgroud) 我无法确定运行 SpecFlow 的旧版本 2.2.0 需要哪个版本的 SpecFlow Visual Studio 插件
由于管理限制,我们不能使用 2.2.0 以外的任何其他 SpecFlow 版本
我已经尝试了几个旧版本的 VS 插件,但是使用我现有的代码(基于 SpecFlow 2.2.0),所有这些都会导致错误:
Error CS1029 #error: 'Version conflict - SpecFlow Visual Studio extension
attempted to use SpecFlow code-behind
generator 1.9, but project 'XXXXXXX' references SpecFlow 2.2.'
Run Code Online (Sandbox Code Playgroud)
我想我需要一些插件版本,它可以在 2.2 内部使用
我不能使用 SpecFlow.Tools.MsBuild.Generation 包,因为 2.2.0 尚不支持。
任何人都可以帮助我吗?SpecFlow Visual Studio 插件的发布历史可以在这里找到:
https://github.com/techtalk/SpecFlow.VisualStudio/releases
编辑
我使用 Visual Studio 2017 (15.9.6)
在“包”文件夹中有 SpecFlow-2.2.0 和 SpecFlow.MsTest-2.2.0。我删除了它们,删除了 nuget 包缓存并重建了解决方案。问题依然存在。
我的 SeleniumSteps.cs 代码中有以下代码我试图让 AfterScenario 在调试这些测试时触发
using PrivateDomain;
using Machine.Specifications;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using TechTalk.SpecFlow;
namespace Functional.Steps
{
public class SeleniumSteps : PrivateDomain.Steps.SeleniumSteps
{
#region Hooks
[BeforeScenario]
public void Before()
{
// before
}
[AfterTestRun, Scope(Tag = null)]
public new static void AfterTestRun()
{
// after testrun
}
[AfterScenario]
public void AfterScenarioErrorScreenshot()
{
// after scenario
}
#endregion
}
}
using OpenQA.Selenium;
using TechTalk.SpecFlow;
namespace PrivateDomain.Steps
{
[Binding] …Run Code Online (Sandbox Code Playgroud)