Newbie: Unit testing presenters?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Newbie: Unit testing presenters?

Syver Enstad-3
There seems to be a quite a lot of functionality embedded in my
presenters. How does other people in this group go about testing these
automatically (ie. unit testing)? Are there any articles on this?
--

Vennlig hilsen

Syver Enstad


Reply | Threaded
Open this post in threaded view
|

Re: Newbie: Unit testing presenters?

Bill Schwab-2
Syver,

> There seems to be a quite a lot of functionality embedded in my
> presenters. How does other people in this group go about testing these
> automatically (ie. unit testing)? Are there any articles on this?

I heard that a some C programmers once used the Windows 3.x event recorder
(or whatever it was called) to walk an app through some steps and then let
it run in a loop with a camcorder pointed at the monitor.  They started it
each day at quitting time and reviewed the tape the next morning to see
when/how it crashed.

The Squeak book edited by Guzdial and Rose contains a chapter on XP and it
makes reference to a similar kind of trick that can be done in Squeak.  That
chapter also suggests that simply opening/closing UI elements will catch at
least gross errors and is easy to automate.  Of course, any functionality
that you can push down into your domain classes will simplify unit testing.

Sorry that doesn't really answer your questions.  If you find any good
references, please pass them along.

Have a good one,

Bill

--
Wilhelm K. Schwab, Ph.D.
[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Newbie: Unit testing presenters?

Syver Enstad-3
"Bill Schwab" <[hidden email]> writes:

>  Of course, any
> functionality
>
> that you can push down into your domain classes will simplify unit
> testing.

Of course. But a quick look at the presenter hierarchy from Dialog and
upwards to the Presenter class seems to indicate that no direct gui
calls are made in the presenter, it's always through the view
class. My idea would be to have a non gui class that implemented the parts
of the view that the presenter relied upon. Now well, I'll have to
learn more about MVP before I am able to evaluate this properly,
There's probably a good chance that trying to emulate a view object is
just to much hassle, as the interface that Presenter and the most
common subclasses use seems to be pretty big.


> Sorry that doesn't really answer your questions.  If you find any good
>
> references, please pass them along.

I will.

--

Vennlig hilsen

Syver Enstad


Reply | Threaded
Open this post in threaded view
|

Re: Newbie: Unit testing presenters?

Bill Schwab
Syver,

> Of course. But a quick look at the presenter hierarchy from Dialog and
> upwards to the Presenter class seems to indicate that no direct gui
> calls are made in the presenter, it's always through the view
> class. My idea would be to have a non gui class that implemented the parts
> of the view that the presenter relied upon. Now well, I'll have to
> learn more about MVP before I am able to evaluate this properly,
> There's probably a good chance that trying to emulate a view object is
> just to much hassle, as the interface that Presenter and the most
> common subclasses use seems to be pretty big.

That's an interesting idea, but, it might be easier and ultimately more
useful to have a framework for "clicking and typing" on views by name.  One
might try invoking event handlers at suitable level, or perhaps even better
post messages to the queue.  It might end up looking something like

    shellUnderTest
        leftClickInSubpresenterNamed:'something';
        type:'This would be posted as keys at random intervals';
        ...

Or, would you create a PresenterTester on the shell and send these messages
to it?  I'm a little nervous about trying to trick Windows into seeing
keyboard and mouse events, but, it would be quite useful if it could be done
safely.  OTOH, having the mouse cursor not currently where the view was
"clicked" might help to shake out some kinds of bug by emulating what
happens when the machine isn't able to keep up.  Also, we'd have to deal
with actions that bring up modal dialogs and be able to "test" them too.

Comnments?

Have a good one,

Bill

--
Wilhelm K. Schwab, Ph.D.
[hidden email]


Reply | Threaded
Open this post in threaded view
|

Re: Newbie: Unit testing presenters?

Syver Enstad-3
"Bill Schwab" <[hidden email]> writes:

>it might be easier and ultimately more useful to have a framework for
>"clicking and typing" on views by name.  One might try invoking event
>handlers at suitable level, or perhaps even better post messages to
>the queue.  It might end up looking something like
>
>     shellUnderTest
>         leftClickInSubpresenterNamed:'something';
>         type:'This would be posted as keys at random intervals';
>         ...

Umm, something like an advanced SendKeys implementation?


>
> Or, would you create a PresenterTester on the shell and send these
> messages to it?

I am not sure that I follow you here. What I originally thought of was
something like this:

TestCase subclass: #MyPresenterTest

rough outline of the behaviour of MyPresenterTest

initialize the presenter with some kind of MockView instead of a real
win32 gui view.  Test that the models of the presenter and eventual
sub presenter behaves like they should when the presenter and the
MockView are manipulated.

But as I said this a bit too early for me. I'll have to understand the
MVP framework better first.

William Wake has some interesting articles on GUI testing (in Java
Swing) on his site http://xp123.com/xplor/. I'll have to check these out
before thinking any more about this.

The material on his site is also featured in the books XP installed and
XP explored by R. Jeffries and W. Wake respectively. The GUI article
is featured in XP Installed.


--

Vennlig hilsen

Syver Enstad