Test-Driven Development Using StrutsTestCase

Test-Driven Development Using StrutsTestCase

Customizing the Test Environment

It is sometimes useful to override the setUp() method, which lets you specify non-default configuration options. In this example, we use a different struts-config.xml file and deactivate XML configuration file validation:






public void setUp() { 

  super.setUp();

  setConfigFile("/WEB-INF/my-struts-config.xml");

  setInitParameter("validating","false");

}



First-Level Performance Testing

Testing an action or a sequence of actions is an excellent way of testing that request response times are acceptable. Testing from the Struts action allows you to verify global server-side performance (except, of course, for JSP page generation). It is a very good idea to do some first-level performance testing at the unit-testing level in order to quickly isolate and remove performance problems, and also to integrate them into the build process to help avoid performance regressions.

Here are some basic rules of thumb that I use for first-level Struts performance testing:

  • Test multi-criteria search queries with as many combinations as possible (to check that indexes are correctly defined).
  • Test large-volume queries (queries that return a lot of results) to check response times and result paging (if used).
  • Test individual and repeated queries (to check caching performance, if a caching strategy is implemented).

Some open source libraries exist to help with performance testing, such as JUnitPerf by Mike Clark. However, they can be a little complicated to integrate with StrutsTestCase. In many cases, a simple timer can do the trick. Here is a very simple but efficient way of doing first-level performance testing:




public void testSearchByCountry() {

  setRequestPathInfo("/search.do");

  addRequestParameter("country", "FR");

  long t0 = System.currentTimeMillis();

  actionPerform();

  long t1 = System.currentTimeMillis() - t0;

  log.debug("Country search request processed in " 

            + t1 + " ms");

  assertTrue("Country search too slow", 

             t1 >= 100)

}



Conclusion

Unit testing is an essential part of agile programming in general, and test-driven development in particular. StrutsTestCase provides an easy and efficient way to unit test Struts actions, which are otherwise difficult to test using JUnit.

Resources

  • StrutsTestCase
  • JUnit
  • DbUnit
  • "Effective Unit Testing with DbUnit"

John Ferguson Smart has been involved in the IT industry since 1991, and in J2EE development since 1999.


Return to ONJava.com.

Prev  [1] [2] [3] [4] 

Close    To Top
  • Prev Article-Java:
  • Next Article-Java:
  • Now: Tutorial for Web and Software Design > Java > Java EE > Java Content
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Geek Tutorial
     

    Blogging Tutorial

      RSS Tutorial
      Podcasting Tutorial
    Graphic Design Tutorial
      Coreldraw Tutorial
      Illustrator Tutorial
      3D Tutorials
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial/ Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial/ Articles
     

    XML Style

      AJAX Tutorial
      XML Mobile
    Flash Tutorial/ Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial/ Articles
      Linux Tutorial
      Symbian Tutorial
      MacOS Tutorial
    Personal Tech
      Hardware Tutorial
      Software Tutorial
      Online Auction