JUnit tests for widgets

453 views
Skip to first unread message

GWTDeveloper

unread,
Jan 29, 2009, 12:10:19 PM1/29/09
to Google Web Toolkit
Hi,

I am new to GWT. I wanted to know effective way of testing widgets
like button, listbox, checkbox, anchor, textbox etc.
I have created a widget factory to create these widgets and attach
given listeners.

when i tried writing unit tests, i was facing problems with anchor
element's clicks. Before i jump into selenium to write these tests,
i wanted to know the effective way of testing these widgets. I want to
keep selenium only for testing UI Layout/styles/component placements.

Your inputs are highly appreciated.

Thanks.

danox

unread,
Jan 29, 2009, 5:23:54 PM1/29/09
to Google Web Toolkit
The GWT has a test framework that is built on JUnit. Essentially you
create tests and you can then test your widgets as java objects in
your test case. The GWT test case will load up hosted mode under the
covers and run your tests in a GWT environment. A quick read over the
GWT docs should get you started:
http://code.google.com/intl/da/docreader/#p=google-web-toolkit-doc-1-5&s=google-web-toolkit-doc-1-5&t=DevGuideJUnitIntegration

hpgabbar

unread,
Jan 30, 2009, 9:20:13 AM1/30/09
to Google Web Toolkit
I am using GWTTestCase only, but for elements like Anchor, i am not
able to find a way to fire a click. on button i could do that.
I want to know, whether GWT provides a way a programmatic equivalent
of the user clicking the anchor. It is there for Button.


On Jan 30, 3:23 am, danox <danoxs...@gmail.com> wrote:
> The GWT has a test framework that is built on JUnit. Essentially you
> create tests and you can then test your widgets as java objects in
> your test case. The GWT test case will load up hosted mode under the
> covers and run your tests in a GWT environment. A quick read over the
> GWT docs should get you started:http://code.google.com/intl/da/docreader/#p=google-web-toolkit-doc-1-...

Daniel Wellman

unread,
Jan 31, 2009, 11:38:14 AM1/31/09
to Google Web Toolkit
Unfortunately, the event propagation system doesn't work in
GWTTestCase - so that means you can't send a click() message to a
Button and expect the registered ClickListeners to be notified. This
means you wouldn't be able to test clicking on an Anchor in a test and
verifying any resulting behavior, even if Anchor supported such a
method - which I'm not sure it does.

I'd recommend moving all the behavior out of any anonymous
ClickListeners and put them onto a "controller" or "presenter" object,
then unit test those classes using standard JUnit test cases. You
won't be able to verify the callbacks are wired to the correct object,
but in my experience that was easiest to check with some manual
exploratory testing, or some very basic Selenium tests to exercise the
system (without going into exhaustive scenario tests, since these were
easier to test with unit tests).

I've written about my experiences with testing GWT applications here,
if it's helpful:
http://blog.danielwellman.com/2008/11/test-first-gwt-article-in-november-2008-better-software-magazine.html

Cheers,
Dan

Harun Pathan

unread,
Feb 1, 2009, 3:07:11 PM2/1/09
to Google-We...@googlegroups.com
I have the similar kind mechanism used in my application. Model-View-Controller
I am already doing similar to what you have suggested in your article. Behaviour in controller.
But wanted to verify attachment of listeners and Widgets done in WidgetFactory.
I will use selenium for this type of testing.

Thanks for the inputs.
Reply all
Reply to author
Forward
0 new messages