Suggestions for automated GUI testing?

We use NUnit for our developer testing, but we also want to do automated testing of the GUI, “simulating a user”.

I have tried test tools such as Mercury and TestComplete, but they cannot control and check objects within GoDiagram, because those objects are not separate windowed controls.

I have also tried using tests that rely on mouse coordinates to select and move GoDiagram objects. The test then uses image comparison to pass or fail. These kind of tests are hard to maintain, of course.

I would prefer to create tests that said “select GoNode 1”, “Move GoNode 1”, “Check new location of GoNode 1”.

Tools such as Mercury and TestComplete allow me to create tests like this for Windows Forms controls, but not for objects within GoDiagram.

Does anybody know any test tools that would allow me to do this, or have any better ideas?

I thought all test systems let scripters access properties and call methods on any Controls in the tested application. Each system probably has its own ways of doing so, and various restrictions. I know that Segue does, and it appears that AutomatedQA does, but I couldn’t read anything interesting on the Mercury web site to tell for sure.
Since it’s very easy to create custom Controls in .NET, it ought to be equally easy to manipulate them from test scripts.
Regarding GoDiagram, there are at least two levels at which you can do your programmatic testing. You can manipulate a GoView, or you can just manipulate a GoDocument and its objects.
GoView intentionally <SPAN =502203512-13012006>canonicalizes all input events as <SPAN =502203512-13012006>GoInputEventArgs (or subclass). Mostly this was for uniformity on <SPAN =502203512-13012006>multiple platforms (WinForms, <SPAN =502203512-13012006>ASP.NET WebForms, <SPAN =502203512-13012006>and <SPAN =502203512-13012006>.NET Compact Framework WinForms), <SPAN =502203512-13012006>but it is also useful for testing. <SPAN =502203512-13012006><SPAN =502203512-13012006>Basically each mouse-oriented test involves setting up GoView.FirstInput and .LastInput, and then calling <SPAN =502203512-13012006>GoView.DoMouseDown, <SPAN =502203512-13012006>DoMouseMove, DoMouseUp, DoMouseWheel, DoMouseHover, and DoCancelMouse <SPAN =502203512-13012006>as desired.
<SPAN =502203512-13012006><SPAN =502203512-13012006>GoDocument and its GoObjects allow you to test the application layers behind the immediate UI layer. Instead of operating at the level of “select”, “drag”, “delete”, “enter text”, you can make direct changes to the GoDocument and GoObjects and make sure that your application logic does the expected things, including loading/storing persistent data and maintaining application-specific invariants and requirements.

We are also trying to automate our testing using Borland Silk test. But borland silk test couldnt recoginze the objects inside goview as explained in this thread.

Is there is any support for this from GoView? Do we need to change anything in code so that the testing tool can recoginze the objects inside goview.
Let me know if you need more details on this.

I’m not familiar with SilkTest. However, at a minimum, you could implement a SilkTest extension using their Extension Kit. Their documentation gives an example of doing so for the UltraWinToolbar control from Infragistics:

SilkTest might also let you extend 4Test by directly using .NET properties and calling .NET methods, so that you don’t have to write a layer of C++ code using the Extension Kit. But I’m not familiar with 4Test, so you’ll need to read its documentation for using .NET objects directly.