I am familiar with nunit for unit testing of the business layer however I am looking now to automate the test of the win forms gui layer.
I have seen watin and the
As a new alternative, I can give you FlaUI (https://github.com/Roemer/FlaUI). It is basically a complete re-write of white with more features and a clean code-base.
Here are some links from MSDN Magazine on automatic testing code:
You may consider using Coded UI, a Visual Studio built-in feature and part of the UI Automation:
Automated tests that drive your application through its user interface (UI) are known as coded UI tests (CUITs). These tests include functional testing of the UI controls. They let you verify that the whole application, including its user interface, is functioning correctly. Coded UI Tests are particularly useful where there is validation or other logic in the user interface, for example in a web page. They are also frequently used to automate an existing manual test.
[...] a typical development experience might be one where, initially, you simply build your application (F5) and click through the UI controls to verify that things are working correctly. You then might decide to create a coded test so that you don’t need to continue to test the application manually. Depending on the particular functionality being tested in your application, you can write code for either a functional test, or for an integration test that might or might not include testing at the UI level. If you simply want to directly access some business logic, you might code a unit test. However, under certain circumstances, it can be beneficial to include testing of the various UI controls in your application. A coded UI test can automate the initial (F5) scenario, verifying that code churn does not impact the functionality of your application.
Read more at: https://docs.microsoft.com/en-us/visualstudio/test/use-ui-automation-to-test-your-code
Check out http://www.codeplex.com/white and http://nunitforms.sourceforge.net/. We've used the White project with success.
Same Answer to a previous question
Edit
The White project has moved, and is now located on GitHub as part of TestStack.
As far as I know, White is an abstraction layer over the top of Microsoft's UI Automation framework. I have written a similar layer that we use internally on our projects and it works great. So White would definattley be worth a look
Microsoft have released the source to UI Automation, so if necessary you should be able to debug right down the whole stack if necessary.
The really cool thing is that with licence cost, you can scale up and run as many machines as you like for execution.
We run inside VSTS and link our results to requirements, but you can use c# express and nUnit and get first class tools and languages for little to no cost.
You could check out the Microsoft UI Automation framework. This has been included in .NET since version 3.0. This is actually what the White framework uses anyway.