BDD using Ranorex, NUnit, POM in Visual Studio 2017
In this example, we are going to work through creating a BDD project in Visual Studio using SpecFlow and Ranorex. This is to show that we can do BDD using Ranorex, but as a draw back we don’t have access to Object Repositories. This could create a framework that is hard to maintain, so to counter this, I am going to demo how you create a Page Object Model (Similar to WebDriver) so Web Elements are only described once in our Project.
- Ranorex 8
- Visual Studio 2017 (VS)
- NUnit VS extension (optional)
- SpecFlow VS extension
There are two Visual Studio extensions I’m going to use – NUnit & SpecFlow
VS menu – Tools->Updates & Extensions… menu, click on online and search for NUnit 3 Test Adapter and install, optionally you could install the NUnit Templates as well if you like
Now do the same for SpecFlow
Project Build Target
You need to set the project build target to .NET 4.5 or higher for the Ranorex API.
VS menu, Project-><Project Name> Properties…
Single Thread Application Setting
Ranorex Tests have to be run as single threaded applications, which we have to tell .NET
In the Solution Explorer, expand the Properties section and open the AssemblyInfo.cs
Add the Using statements and STA statement as below:
Right Click on the References section in the Project Explorer and choose References…
Add the following Framework assemblies:
We need System.Drawing and System.Windows.Forms for the Ranorex API, and we need System.Configuration for creating some Global Parameters as you will see later
In the same references manager, now click the Browse section, then click the browse… button and navigate to the Ranorex install directory, for example, C:\Program Files (x86)\Ranorex 8.0\Bin
You need to add the following DLLs:
Ranorex.Bootstrapper, Ranorex.Common, Ranorex.Core, Ranorex.Core.Resolver, Ranorex.Core.WinAPI and all the Ranorex.Plugin libraries
Now we need to add NUnit & SpecFlow libraries, which we can do using the NuGet Manager.
Right-click your References and choose Manage NuGet Packages, Click browse and search for NUnit.
Install NUnit, and NUnit.Console (if you wish to run tests from the command line)
Now search for SpecFlow and add the SpecFlow reference as above.
We would like to store some values globally such as the web domain we will be testing, which browser we would like to use and also any timeouts for finding Web Elements.
This will reduce maintenance of tests, as if we want to run the suite against a different browser, we simply update the browser name in the App.config file
To do this we will use a config file. Add a new item to your project General->Application Configuration File
Open it and add the following code:
Now to access these values from the file, we will create an object class. Add a new folder to the project, call it helpers, then in the folder, add a new class to the project called Globals:
Open the Globals.cs Class and add the following code:
OK, that’s all the set up done, let’s move on to part 2