My team currently uses TestComplete for automated UI testing (of a .Net 3.5 WinForms application). We are considering switching tools - a primary reason is that we want to write UI tests using C#. (Our non-UI tests - unit, integration, system - are all C#, our team is experienced in writing and organizing code in C#, we like the benefit of compile time checks of test code, etc)
One very important feature of TestComplete however is the ability to access native properties of .Net Objects in the AUT. There are some awkward bits of our UI where we need to read underlying data and do a bit of arithmetic in order to determine how to perform the next action. We can use TestComplete's object browser to attach to the GUI app and start exploring the control hierarchy, and explore .Net properties/fields too. And access the same in our automated tests: http://support.smartbear.com/viewarticle/30816/
I've had a very quick look at Ranorex (which ticks the C# box), and it doesn't appear to be as capable as TestComplete in this sense. It seems to get stuck and return null as soon as a property/field type is not serializable: http://www.ranorex.com/blog/transfering-data-to-and-from-a-net-control
It seems reasonable that to copy an object over the process boundary, the object should be serializable, but then what is TestComplete doing? Something nasty with reflection?
My question is, are there any test frameworks that make this property browsing as easy as TestComplete, while allowing us to write tests in C#? (and hopefully being a bit less prone to crashing than TestComplete)
The Ranorex link seems to indicate that we can write our own (test) code to map the object into something that can be transferred, but this is additional effort. Also, TestComplete's object browser is very useful for testers to manually explorer the murky depths of the App, while Ranorex's Spy tool does not allow you to browse to non-serializable objects.