Thalasar Ventures

Use of Google Web Toolkit for testing methodologies

Outsource Java development is preferred for high-end applications with GWT has bought new testing methodologies for developers to create better solutions. Testability being one of the core features of GWT development the GWT developers can easily test their applications by using its testing tools. Testing of GWT applications can be categorised into three test component types:

Standard JUnitTestCases
GWTTestCases (subclasses of the JUnitTestCase)
Selenium Testing

During GWT development if strong design patters are applied to the codes then it would help to keep the test cases more effective, maintainable and concise. Entire GWT application is written in Java language thus it is possible to test a good part of app with the use of standard JUnitTestCases. GWT also has some TestCase subclass, the GWTTestCase class which can test code JavaScript. Client side Java Code will be cross-complied to Java Script and only few out of all use direct implemented codes.

DOM is manipulated by all widgets and many GWT libraries consists some native code which means that while GWT developers run unit tests over components by executing JavaScript natively then they must run in an environment that supports the runtime. For this test a subclass of JUnit’s TestCase called GWTTestCase is provided by GWT. It allows implementation of JUnit test case which looks identical to standard one.

An abstract method called getModuleNameis the only difference that returns a string containing the name of code module as defined in application. A hosted mode browser is started by the GWT framework while running the test and then the test case is evaluated. The meaning of this is that all the facilities of hoted browser is available to your test case and GWT developers are capable of running native JavaScript functions, render widgets, or invoke asynchronous remote procedure calls. The other option to run tests is the hybrid of Java and JavaScript code or compilation and running of all GWT codes as JavaScript. For this declaration and passing of -Dgwt.args=”-web” Java runtime is required. Wise decision is to run the tests on both hosted as well as web mode.

Now set up the class path for running these tests which requires compiled Java classes while Java development. A tool called “junitCreator” is provided that generates an empty GWTTestCase that helps in running the tests in both modes. While Java development developers test native JavaScript code for this and in JUnittests faces some hindrances. Initially the normal browser event mechanisms do work as expected in test mode but it is required to add adventitious code for performing things like programmatically clicking of a button and then expecting the corresponding event handlers to be fired. (e.g. onClick).

Writing selenium tests which can run against the browser with all mechanisms in correct place is the right approach. Some performance considerations like run the TestCase forces compiling of source codes in the modules that incurs with the startup delay. Each test that is performed needs starting and shutting down of headless browser. A technique that can help in this matter is to group the test cases into TestSuiteswhich can run tests in single suite and saves costs by incurring only a single compilation startup cost.

Generally standard JUnitTestCases should be preferred as GWTTestCase is slower than it to run orders of magnitude.

For More Information:- Java Development | GWT Development

Both comments and pings are currently closed.

Comments are closed.