With the ever-increasing number of programming languages and frameworks, it’s quite easy to get lost and confused in this huge sea of all these frameworks. Popular languages like C# provide us with a lot of frameworks and it’s quite essential to know which particular framework would be best suited for your needs.
This decision of choosing the best-suited Selenium C# framework can be a difficult task as a decision has to be made based on the project requirements, in-house expertise, and deadlines. Otherwise, you might get lost in the huge waves of questions such as do I look for a framework with test-driven development, it supports parallel testing, etc.
Everyone has different requirements and thus needs a different solution. In this article we explore the top Selenium automation testing frameworks in C#, to help you find your perfect match to your automated browser testing requirements.
Note — Visual Studio 2019 (Community Edition) is the IDE that is used for development and any reference to the installation of test frameworks is concerning VS 2019.
NUnit is an open-source Selenium C# framework that is ported from JUnit. The latest version of NUnit is NUnit 3 which has a host of new features and supports a wide range of .NET platforms. This Selenium C# framework is widely preferred by C# developers for automated browser testing.
NUnit framework is user-extensible, follows a parameterized syntax (or annotation-based syntax), and primarily used for Test-Driven Development (TDD) with C#.
The supported platforms are .NET framework 3.5+, .NET standard 1.4+, and .Net Core.
How to Install the NUnit Framework
NUnit test framework can be downloaded from Nuget.org and at the time of writing this article, it had been downloaded more than 126 million times.
To install this Selenium C# framework, execute the following command on the Package Manager (PM) console of VS 2019.
PM> Install-Package NUnit -Version 3.12.0
You also have the option of installing the NUnit framework by using the GUI option of Package Manager (PM). You can refer to our detailed article on NUnit for Selenium automation testing for more information about the installation.
What Makes NUnit a Popular Selenium C# Framework?
NUnit is a preferred Selenium C# framework that is used for automated browser testing. Below are some of the advantages of using the NUnit framework:
- It is a robust and user-extensible test framework.
- Attributes are an important part of the NUnit framework and they are instrumental in speeding up the execution of the test cases.
- The framework is well-suited if you are planning to use Test-Driven Development (TDD) for the test activity.
- NUnit is open-source and the project is witnessing active participation on GitHub.
- Along with automated browser testing, the NUnit framework can also be used for unit testing and acceptance testing using the Selenium framework.
- Support for parallel test execution on a remote Selenium grid reduces the overall test execution time and accelerates the process of automated browser testing.
- Good reporting tools are available that can be used with the NUnit framework.
Areas Where NUnit Framework Can Do Better!
There are way too many attributes in the NUnit framework and this often seems confusing. Some of the areas where the NUnit framework could have been better are below:
- The class that contains the tests is under the [TestClass] attribute. Having tests confined under one attribute does not look like a robust approach.
- Instead of having the implementation of test cases/test suites under a particular class, there should have been intelligence built in the test framework so that it could locate the test methods.
- All the tests execute in the same fixture/class whereas the creation of a new instance of the test class for every test is a much better approach.
- The possibility of one test causing other tests to fail is more when using the NUnit framework as all the tests are executed in the same class.
Is NUnit the Best Selenium C# Framework for You?
You should consider the NUnit framework for tasks related to Selenium automation testing and automated browser testing as it is a test framework that has existed for a long time.
Though this Selenium C# framework does not provide much isolation of tests, you could use it since it supports Parallel test execution on the local & remote Selenium grid.
xUnit.Net is another popular test framework in C# that is used for Selenium automation testing. ‘x’ in xUnit stands for the programming language for which the test framework is built i.e. JUnit for Java, NUnit for C#, etc. It is a Selenium C# framework that is built by the creators of the NUnit framework.
Instead of planning for incremental changes in the NUnit framework, the creators decided to build a new test framework that is more robust and is built around the community that uses it. Below are some of the reasons why xUnit.net was built:
The latest version of the xUnit framework is 2.4.1. xUnit is more robust and extensible when compared to the NUnit framework.
How to Install the XUnit Framework
For installing the xUnit framework and other dependent packages, you have to execute the ‘Install Package’ command on the Package Manager console.
You also have the option of installing the packages using the Package Manager GUI. To open the NuGet Package Manager, go to ‘Tools’ -> ‘NuGet Package Manager’ -> ‘Manage NuGet Packages for Solution’. Search for the following packages and install each of them:
What Makes XUnit a Popular Selenium C# Framework?
The xUnit framework is built around the community. Hence, the majority of the shortcomings of the NUnit framework are not carried forward while designing the xUnit framework. Below are some of the reasons why this Selenium C# framework is gaining popularity:
- The framework follows a unique style of testing. Tags like [Test] and [TestFixture] which were an integral part of the NUnit framework are not included in xUnit framework.
- Intelligence is built in the framework as test cases & test suites are not restricted to any particular attribute. The framework is intelligent enough to identify the test methods, irrespective of the location of the methods.
- xUnit provides better test isolation as a new test class is instantiated for each test case. Once the test case execution is complete, the test class is discarded. This reduces the dependency between different test cases and also minimizes/nullifies the possibility of one test causing the other test case to fail!
- It is more user-extensible when compared to the other popular C# frameworks used for Selenium automation testing.
- [Setup] and [TearDown] annotations that normally included the initialization and de-initialization related implementation for the test-cases are not a part of the xUnit framework. This avoids code duplication and makes the code flow more understandable.
- The framework encourages developers & testers to come up with well-designed tests as it makes use of a constructor of the test class for initialization and IDisposable interface for de-initialization.
- This Selenium C# framework has a lesser number of annotations when compared to other C# frameworks. Also, more modern tags like [Fact] and [Theory] ease the process of test case creation, whether the test cases are parameterized or non-parameterized.
- There is the usage of Assert. Throws instead of [ExpectedException] which is much better in handling generic asserts.
- Parallel test execution using a Selenium Grid which is an essential part of automated browser testing can be achieved at the thread level in xUnit.
- It can be used for data-driven testing.
Areas Where xUnit Framework Can Do Better!
The xUnit framework has been well-received by the developer & test community. As xUnit is a Selenium C# framework created using intuitive terminology, it is preferred by the folks looking for test frameworks that enable automated browser testing.
Documentation is the only area where the xUnit framework needs some improvement. It is good to see that it is improving over time.
Is xUnit the Best Selenium C# Framework for You?
You should choose the xUnit framework for your project if you are looking at Selenium C# frameworks that are less confusing (with fewer attributes), well-designed, and more user-extensible.
There would be a learning curve involved in porting the test code that makes use of the NUnit/MSTest framework to xUnit as it would require a detailed understanding of the framework. The developers of xUnit have a reputation for commitment & evangelism and this is evident from the design of the xUnit framework which keeps the community at the forefront.
If you are looking for a modern C# test framework for automated browser testing, you should give xUnit a spin!
Golem is an open-source, object-oriented C# test framework that is available on GitHub as ProtoTest.Golem. Golem was used as an internal tool at ProtoTest and the good part is that the tool had already been used by several ProtoTest’s clients before it was made open-source.
As mentioned by the author Brian Kitchener, Golem is an all in one test automation for anyone who is working in the .NET environment. The tests in Golem are written in Visual Studio. Initially, MbUnit was used for test case development and Gallio for execution but the version 2.2.1 of Golem internally makes use of the NUnit framework.
How to Install the Golem Framework
The latest version of Golem is 2.2.1. Golem can be installed by executing the package manager command ‘Install-Package <package-name>’ on the PM console.
PM> Install-Package Golem -Version 2.2.1
Alternately, you also have the option of installing this C# test framework using the Package Manager GUI option in VS 2019. The NuGet package for Golem can be downloaded from here.
What Makes Golem a Popular Selenium C# Framework?
The biggest upside of the Golem framework is that it was extensively used internally at ProtoTest before the code was open-sourced. Below are some of the positives of the Golem test framework:
- The Golem framework is open-source, simple, well-designed, and uses object-oriented APIs.
- It supports several test automation tools like Selenium WebDriver, Appium, UIAutomation from Microsoft, and can also be used to test REST services & validate HTTP traffic.
- The framework is much more than the Selenium C# framework as it supports different test automation tools.
- Tests are written using industry-standard, ‘page object,’ design pattern
- It makes building clean, robust, reusable and simplifies the process of scale-able automation.
- It has a robust reporting and logging mechanism which can be very useful for isolation of issues.
- It supports data-driven testing as well as parallel test execution using Selenium Grid.
Areas Where the Golem Framework Can Do Better!
As Golem supports multiple test automation tools, it can be used for test automation including automated browser testing and Selenium automation testing. Though there is several advantages of using Golem for test automation, their number of shortcomings:
- The last update to Golem was on 11/3/2016 due to which the framework is not able to gain much traction.
- To date, 2.2.1 version of Golem has been downloaded only 665 times. This means that Golem’s latest version is not in use by many developers/enterprises.
Is Golem the Best Selenium C# Framework for You?
The biggest advantage of the Golem framework is that it supports several test automation tools, including Selenium WebDriver. Hence, it can be used for Selenium automation testing.
Though the framework was built keeping simplicity and reusability in mind, minimal framework updates can dampen the growth of Golem. Since there has not been much activity on Golem’s Support Group, test automation development using Golem can come to a standstill if you encounter issues when using the framework.
You should choose the Golem framework over other test automation tools only if the goal is to look for test automation frameworks that provide support for multiple automation tools.
Bumblebee is a Selenium browser test automation framework that can be used for standardized creation of page objects. It can also be used for dynamic web pages. Bumblebee is a .NET layer that is built on top of the Selenium browser automation framework. The latest version of Bumblebee is Bumble 2.0 i.e. 2.1.2.
Bumblebee was built in a manner that each page can be broken down into multiple Blocks and Elements. The classes provided by Bumblebee to model your website into page objects that can be consumed into the automation code. If page objects are well designed, writing the automation code in Bumblebee should be an effortless task.
How to Install Bumblebee Framework
To install Bumblebee on Visual Studio, create a new project of type ‘Class Library’. Like other Selenium C# frameworks, Bumblebee should also be installed using the Package Manager in VS 2019. Execute the following command on the Package Manager (PM) console:
PM> Install-Package Bumblebee.Automation
Alternatively, Bumblebee can be installed by downloading Bumblebee’s Nuget package. Go to ‘Tools’ -> ‘NuGet Package Manager’ -> ‘Manage NuGet Packages for Solution’. Search for ‘Bumblebee. Automation’ and click Install for installing the Bumblebee framework.
What Makes Bumblebee a Popular Selenium C# Framework?
The best part about the Bumblebee framework is the design. Bumblebee standardizes the design of page objects and makes the automation scripting easier. Below are some of the core reasons why you should use Bumblebee for activities related to automated browser testing:
- Like other page object models, Bumblebee divides testing into two parts. The page objects to model the subject of the testing, and the automation uses the page objects to tell the browser what to do.
- Page objects can be developed at a quicker pace by modeling which parts of the page can be interacted with.
- The automation are driven by IntelliSense.
- There is an intense focus on usability as it makes use of standardized UI interfaces.
- This Selenium C# framework is flexible, supports parallelization, and also provides test framework independence.
- As each page is broken down into Blocks and Elements, writing test automation code is a much simpler task with Bumblebee.
- Each browser session is instantiated with a driver environment, specifying how to create the driver for that particular session. Thus you can have multiple environments, such as a local environment (running on your local machine) and a grid environment (running on some remote selenium grid). Hence, Bumblebee can be used for automated browser testing on local as well as remote Selenium grid.
- There is extensive documentation on this Selenium C# framework that can aid developers with automated browser testing.
- Test cases designed using Bumblebee are extremely flexible and takes some of the burdens off of designing blocks for complicated sites.
- There is a separate library for adding Kendo element support for the Bumblebee test framework.
Areas Where the Bumblebee Framework Can Do Better!
Bumblebee has advantages of a well-designed test framework that makes excellent use of the Page Object Model (POM). This eases the job of test creation and test maintenance.
Though the Bumblebee framework is updated regularly, the documentation seems a bit outdated as it does not contain examples with the xUnit framework which is gaining traction for Selenium automation testing. Also, there are no code samples/snippets demonstrating usage of Bumblebee for parallel test execution, using Selenium Grid, which is a critical aspect in automated browser testing.
Is Bumblebee the Best Selenium C# Framework for You?
The Bumblebee framework has all the right things in place as far as automated browser testing is concerned. The learning curve for getting used to the Bumblebee framework will not be much as it is a .NET layer on top of the Selenium browser automation framework.
If your team is looking for a Selenium C# framework that is built on good design principles, follows Page Object Modelling (POM), supports parallel test execution, and is test framework independent; then you should give Bumblebee a try.
Atata framework is an open-source C#/.NET web UI test automation framework that is built on Selenium WebDriver. It uses the Page Object Pattern for development. This framework supports .NET Framework 4.0+ and .NET Core/Standard 2.0+. The latest version of Atata is 1.4.0. The project is hosted on GitHub under the Apache License 2.0.
This Selenium C# framework consists of the following concepts:
- Components (controls and page objects)
- Attributes of the control search
- Settings attributes
- Verification attributes and methods
There are two ways in which Atata based project can be created in VS 2019:
- Project templates — The supported templates are Atata NUnit Test Project (.NET Framework), Atata NUnit Test Project (.NET Core), Atata Components Library (.NET Framework), and Atata Components Library (.NET Standard).
- Item templates — The supported item templates are Atata Page Object, Atata Base Page Object, Atata Control, Atata Trigger, Atata NUnit Test Fixture, and Atata NUnit Base Test Fixture.
How to Install Atata Framework
Once a new Atata project is created, the Atata package has to be installed. Along with the base Atata package, dependent packages of Atata are automatically installed. For installing the Atata Package, the following commands have to be executed on the Page Manager Console:
The same packages can be downloaded from NuGet Gallery and installed using the Package Manager GUI in VS 2019.
Atata.Bootstrap package is the C#/.NET package containing a set of Atata components for automated web testing/automated browser testing integration with the Bootstrap Framework.
Atata.Configuration.Json is a C#/.NET package for Atata configuration through JSON files.
Atata.KendoUI is a C#/.NET package containing a set of Atata components for automated web testing integration with the Kendo UI HTML Framework.
What Makes Atata a Popular Selenium C# Framework?
Atata is a relatively new Selenium C# framework but the overall design based on Page Object Model (POM) and flexibility to use with different .NET engines are the points that make Atata a powerful framework.
Below are some of the key factors that make Atata a framework to watch out for in 2020:cross browser testing
- Atata is based on the Selenium WebDriver and preserves all the features of Selenium WebDriver. As the Selenium framework is widely used for automated browser testing/cross-browser testing, the learning curve involved to learn the framework will be steep.
- As Atata is based on POM, the creation, and maintenance of test cases/test suites is not difficult.
- Atata can be used with major .NET test frameworks i.e. NUnit, xUnit, SpecFlow, etc.
- Atata works well with Continuous Integration (CI) systems like Jenkins, Azure, DevOps, TeamCity, etc.
- It has built-in reporting logging and screenshots capturing functionality.
- It has more powerful assertion methods and triggers that are useful for component and data verification.
- There are a powerful set of components (inputs, tables, lists, etc.) built-in the Atata framework. Though these components might not be useful for Selenium automation testing, they would be used for data-driven testing.
- There is a feature for multi-browser configurations via fixture arguments.
- This Selenium C# framework is user-extensible. Atata.Bootstrap and Atata.KendoUI packages have a set of ready to use components.
The Atata framework has the right set of powerful features that are useful for automated browser testing. The framework is updated regularly with v1.4.1 released in Q4, 2019.
Areas Where the Atata Framework Can Do Better!
Though Atata is not a new test framework, the development of the framework picked up pace in 2019. We have to wait for more adoption before commenting on the improvements to the framework. On the whole, it looks like a promising automated browser testing framework as it can be used with popular C# frameworks.
The team behind the development of the Atata framework has to ensure that the community is updated about the development of the framework else it might lose traction!
Is Atata the Best Selenium C# Framework for You?
The biggest plus point of using the Atata framework is that it can be used with popular test frameworks like NUnit, xUnit, SpecFlow, etc. Since this Selenium C# framework can be used with SpecFlow, it is instrumental for Business-Driven Development (BDD).
It is easy to get started with the Atata framework and the examples section on the Atata site provides several examples demonstrating different test scenarios. Though the first version of Atata was released in 2016, the development gained pace in 2019 which makes it a Selenium C# framework to watch out for in 2020.
Gauge is another popular test automation framework that is used to create readable and maintainable tests using C#. Gauge is open-source and the framework is created by ThoughtWorks Inc. and developers/creators behind the Selenium. The latest version of Gauge for C# is 0.10.6.
It also supports other programming languages including GoLang. Gauge is a preferred Selenium C# framework used for the development of BDD (Behavior Driven Development) and ATDD (Acceptance Test Driven Development).
The Gherkin language is used for the creation of feature files and spec files are created using markdown language. As tests are in Markdown, it reduces the effort for test code creation and maintenance.
How to Install Gauge Framework
To install this Selenium C# framework, you have to visit, Installing Gauge page on the official website of Gauge. Once you are on the page, select the target OS (operating system), programming language, and IDE/Editor.
In our case, we installed the Gauge framework on Windows 10 with the target language as C# and IDE as Visual Studio (Download link).
Once the installation of the Gauge framework is complete, you need to install the Gauge plugin for Visual Studio. As per the notice, the Gauge team will officially end support for the Gauge plugin for Visual Studio in October 2020.
What Makes Gauge a Popular Selenium C# Framework?
Gauge is used for automated browser testing due to several reasons; few of them are listed below:
- Availability of several templates in the programming language of your choice helps you kick-start the test automation project
- Command-line tools that make integration with CI/CD tools much easier
- Flexibility to create your plugin using Gauge plugin API
- Integration with cloud-based cross-browser testing tools like LambdaTest
- Creation of scalable test cases/test suites through parallel test execution
- Focus on reporting in different reporting formats (HTML, XML, Flash, etc.) that help in locating and isolating issues in test cases
- Integration with build management tools like Maven, Cradle, etc.
- Well suited for BDD and ATDD that uses Gherkin for creation of spec files and feature files
- Excellent documentation to help developers get started with Gauge framework
As the Gauge framework supports parallel test execution, it is widely preferred for automated browser testing on a remote Selenium Grid.
Areas Where the Gauge Framework Can Do Better!
There are frequent updates to the Gauge framework which is very encouraging to the developer community that uses Gauge for automated browser testing.
Many C# developers use Visual Studio as the default IDE for development and testing. Deprecating the Visual Studio Gauge Plugin in favor of Gauge Visual Studio Code Plugin could cause problems to developers who use VS 2019 (and not Visual Studio Code). Below is the snapshot of the announcement from the GitHub repository of Gauge:
Is Gauge the Best Selenium C# Framework for You?
You should choose Gauge over test automation frameworks if you are looking for a Selenium framework that can be used with different programming languages. If your team is well-versed with Gherkin, you can choose the Gauge framework as it is used for BDD, the framework is updated regularly, and has a growing community.
MSTest, also referred to as Visual Studio Unit Testing Framework is the default test framework that is shipped along with Visual Studio. The latest version of MSTest is MSTest V2. The framework identifies tests via annotations/attributes under which the implementation is present. The primary responsibility of annotations in MSTest is to inform the underlying framework about the interpretation of the source code.
MSTest V2 is open-source and has much more powerful features than its predecessor. Project migration from MSTest V1 to MSTest V2 does not require much effort as the entire porting process is seamless. MSTest V2 is hosted on GitHub and the repositories are available at Microsoft/testfx: MSTest V2 framework and adapter and Microsoft/testfx-docs: Docs for MSTest V2 test framework.
As MSTest V2 is a community-focused Selenium C# framework, it is gaining acceptance and popularity for tests related to automated browser testing.
How to Install the MSTest Framework
Libraries/Packages related to this Selenium C# framework can be installed using Package Manager Console in Visual Studio. In VS 2019, go to Tools’ -> ‘NuGet Package Manager’ -> ‘Package Manager Console’ and execute the following on the PM Console
Packages for the MSTest framework i.e. MSTest.TestAdapter, MSTest.TestFramework and Microsoft.NET.Test.Sdk can also be installed by using the NuGet Package Manager. It is accessed by going to ‘Tools’ -> ‘NuGet Package Manager’ -> ‘Manage NuGet Packages for Solution’.
What Makes MSTest a Popular Selenium C# Framework?
MSTest V2 is widely accepted by the test community which is into Selenium automation testing. Below are some of the salient features of MSTest V2 which makes it a popular framework for automated browser testing:
- Open-source and community-driven focus are the key factors that work in favor of MSTest V2.
- V2 version of MSTest framework comes with cross-platform support i.e. developers can write tests for the .NET framework, .NET Core, and ASP.NET Core on varied platforms like Windows, Mac, and Linux.
- Data-driven testing is possible with the MSTest framework. With a data-driven approach, developers can come up with methods that can be executed several times using different input arguments.
- Using in-assembly parallelism features, multiple tests can be executed in parallel thereby reducing the overall execution time.
- The framework is extensible as developers can come up with custom attributes and custom assets using MSTest.
As MSTest framework comes pre-bundled with Visual Studio, many developers prefer using the framework for Selenium automation testing. V2 version of MSTest is much more developer-friendly which is also one of the reasons for the growing popularity of this Selenium C# framework.
Areas Where MSTest Framework Can Do Better!
MSTest V2 is comparable with other popular Selenium C# frameworks like xUnit and NUnit. However, xUnit has an upper edge as it has less number of annotations which leads to less confusion.
MSTest does not provide adequate test isolation as a new test class is not instantiated for each test case. These can be considered as the strong points of other test frameworks like xUnit.net rather than the shortcomings of MSTest.
Is MSTest the Best Selenium C# Framework for You?
MSTest V2 comes with an interesting set of features like parallel test execution using Selenium Grid, extensibility, community focus, data-driven testing, and much more.
The MSTest framework can also be used without Visual Studio, all you need is a command-line tool named MSTest.exe. Depending on the complexity of the project and skill-set of the team members, you have to choose between MSTest, xUnit, and NUnit framework for the project as each of these Selenium C# frameworks have their advantages and disadvantages.
SpecFlow is another popular C# automation framework that is used for BDD and ATDD development. It also makes use of the Gherkin language for the creation of features and scenarios. It is open-source and the source-code of SpecFlow is available here.
SpecFlow is a part of the Cucumber family and supports .NET, Xamarin, and Mono frameworks. The latest version of SpecFlow is SpecFlow 3 (i.e. 3.0.225). It can be used with popular Selenium C# frameworks like NUnit, xUnit, and MSTest.
How to Install the SpecFlow Framework
Before installing the packages for SpecFlow, the SpecFlow integration for VS 2019 has to be installed. For installing the plug-in, download the SpecFlowForVisualStudio plug-in from the Visual Studio Marketplace and install it by double-clicking on the same. You could also install the plug-in from the Visual Studio IDE by searching for SpecFlow for Visual Studio 2019 in the Online extensions.
SpecFlow and other dependent packages can now be installed by executing the following commands on the Package Manager (PM) console:
As shown above, we are making use of the NUnit framework for the development of test cases hence the same is installed along with the SpecFlow framework.
What Makes Specflow a Popular Selenium C# Framework?
SpecFlow is used not for traditional test case development but for the development of BDD and ATDD. Below are some of the primary reasons for using the SpecFlow framework:
- SpecFlow uses the Outside-In approach for the development of acceptance tests which is designed based on business behavior rather than technical specifications.
- As Gherkin being a ubiquitous language, effective test cases using Gherkin can be developed by technical, as well as non-technical personnel.
- Test cases developed using SpecFlow and Gherkin are more modular & maintainable as changes (in Gherkin) are involved in the scenario file and corresponding changes are required in the implementation.
- Parallel test execution can be performed using SpecFlow by combining the parallelism capability of the NUnit framework with SpecFlow’s dependency injection.
SpecFlow 3 is more widely used when compared to other Selenium C# frameworks that aid ADD and BDD as it is open source and can be used with other popular test automation frameworks.
Areas Where SpecFlow Framework Can do Better!
Parallel test execution becomes extremely critical in scenarios related to cross-browser testing. The documentation on parallel execution with NUnit and SpecFlow is not very comprehensive and requires an update.
Is SpecFlow the best Selenium C# Framework for you?
Your project should consider SpecFlow if the intention is to develop BDD and ATDD tests. Doing so will also provide an opportunity for others (non-technical folks) in the team to work on test scenarios from an end-user’s perspective.
Choosing an ideal Selenium C# test framework should be based on the team’s expertise and prior experience with the framework.
Many test teams are making use of BDD and ATDD as it improves collaboration between the team members and also brings an extra angle on automation testing. In such scenarios, you should choose the best-suited test automation framework for performing the job.
All the Selenium C# test frameworks support parallel test execution but you might encounter issues to get started with it. Hence, look at the community of the test framework before making a final choice☺.
Do you agree with our picks? Let us know, which is your favorite C# test automation framework. Pick your favorite and tell us the reason why, in the comment section below!