Getting started with SpecFlow
Tags: integrationtest, beginners, csharp, specflow
Published: 2023-05-11 10:58:42

SpecFlow is a test automation solution for .NET built upon the BDD paradigm. Use SpecFlow to define, manage and automatically execute human-readable acceptance tests in .NET projects (Full Framework and .NET Core).

SpecFlow tests are written using Gherkin, which allows you to write test cases using natural languages. SpecFlow uses the official Gherkin parser, which supports over 70 languages. These tests are then tied to your application code using so-called bindings, allowing you to execute the tests using the testing framework of your choice. You can also execute your tests using SpecFlow’s own dedicated test runner, SpecFlow+ Runner.

**Prerequisites**

- _Basic understanding of C#_
- _Visual Studio 2017 or later_

**What is BDD**

BDD is BDD (Behavior-driven development) Testing is a technique of agile software development and is as an extension of TDD. The idea is to describe how the application should behave in a very simple user/business-focused language.

**What is Gherkin**

Gherkin is a structured language it follows some syntax let us first see a simple scenario described in gherkin.

Feature: Search feature for users This feature is very important because it will allow users to filter products

Scenario: When a user searches, without spelling mistake, for a product name present in inventory. All the products with similar name should be displayed

Given User is on the main page of www.myshopingsite.com

When User searches for laptops

Then search page should be updated with the lists of laptops

Gherkin contains a set of keywords which define different premise of the scenario. As we can see above the colored parts are the keywords. We will discuss about the gherkin test structure in details later but the key points to note are:

- The test is written in plain English which is common to all the domains of your project team.

- This test is structured that makes it capable of being read in an automated way. There by creating automation tests at the same time while describing the scenario.

**Setting up SpecFlow**

- Create a new project using the visual studio
   File -> New -> Project

- Select windows from the templates option and then select 
  class library.

- This will create a blank project with a class library having 
  a plain class file. 

- Now click on the tools option on the top menu bar of the VS. 
  Select extension and updates.

- Search "SpecFlow for visual studio" latest option from 
  online repository.

- Post this please restart your visual studio instance to let 
  the extension added to the VS. 

- Now open the class file and add nuget reference of 
  "SpecFlow" by installing it. Last step would be to add NUnit 
  Adapter and NUnit Framework from nuget.

**Adding SpecFlow feature**

Following are the steps which will help in adding the feature file of our specflow.

- Right-click on the solution file and select add followed by 
  new item.

- Now select specflow feature file and create a new feature 
  file. While providing the name of file make sure the 
  extension is "<file_name>.feature".

- Please verify a dummy feature file getting created. It 
  primarily holds two parts. First, holds feature tag. This 
  defines the need and reason of this feature file. Second, is 
  the scenario tag. This holds the setups required to satisfy 
  the test scenario. This will also be mapped to another file 
  call step definition file. Each statement will be mapped 
  with the specific step definition.

- Right-click on your feature file in the code editor and 
  select Generate Step Definitions from the popup menu.

- This displays a Pop Up window, which will ask to select the 
  statements for which Step Definition file is to be created. 
  Select all and click on Generate button.

- It will ask to specify the folder path to save the Step 
  Definition file, let it be a default project folder and hit 
  the Save button. All the statements will change the color 
  now, it means these Feature statements are linked with Step 
  Definitions.

- To have a look at the attached definitions, click on any 
  statement and press F12 button. This will open up the linked 
  definition file and the cursor will be pointing to the 
  linked definition.

**Executing test files**

- Now to run go to Test -> Windows -> Test Explorer.

- Notice, at the left side a new window is appeared called 
  Test Explorer. One test is also displayed in the Test 
  Explorer window. Now to run a Feature Test, Right-click on 
  the test in the Test Explorer window and select Run Selected 
  Tests. This will run the selected test and display the 
  output in the console window.
 
**Note:** We can also use XUnit instead of NUnit. Also, Always use names easily coinciding with the purpose for which we are creating it. 

## Connects

Check out my other blogs: 
[Travel/Geo Blogs](shishsingh.wordpress.com)
Subscribe to my channel: 
[Youtube Channel](youtube.com/@destinationhideout)
Instagram:
[Destination Hideout](https://www.instagram.com/destinationhideout/)

## References

_Tutorials_
- [Specflow_tutorial](https://www.toolsqa.com/specflow/specflow-tutorial)

_Official documentation_
- [Specflow_Docs](https://specflow.org/)