Hi Frans,
On Fri, 2011-05-20 at 14:52 +0700, Frans Thamura wrote:

> 
> and i have several question, and i think that is good if we can share it here
> 
> i want to know, the test mechanisme , best practices of testing in Struts2 
> world
> 

I work in TDD, which means I write the tests first and then develop the
functionality (check Lasse Koskela's book on the subject).

My usual methodology is:

- Pick up a story/use case (eg: click on People list button shows the
list of all people in the phone book list)
- Write a Test class for the PeopleAction.list() method
- There will be a couple of tests: happy path, what if there aren't any
people, what if there's a problem accessing the database?
- Recently I've been developing a lot with services. this means the
action will usually be simple, something like manipulate the properties
that come from the request (if necessary) and pass them to the service
- The last sentence means I can mock up the service here: I am
interested in testing if the action behaves correctly - ie, if it
catches exceptions, sends to the correct result, I am not really
interested  in knowing if the database is being accessed correctly. So
EasyMock is a good library to use
- After building the test and the Action, I do have the problem: is my
service (eg service.getAllPeople() ) working as expected? Time for some
integration test. Bare in mind I'm working in TDD: I've build an
interface for the service, but the implementation doesn't exist yet
- I repeat the test-build cycle, this time to build the correct
implementation of service.getAllPeople(). 
- Work done

Now, some remarks:
- This unit testing doesn't do struts integration, such as:
    - Struts validation
    - My custom authorisation (I have developed a @AuthorisedRoles
annotation that only authorised users with some roles to execute that
action

I'm not really sure what/when/where is the best way to test this. Right
now I test this in a separate class that I suffix with, eg,
*ValidationIntegrationTest. I'm not 100% happy with this approach, as
a) I end up testing my action in 2 or 3 different places
b) I'm not completely happy with my validation test class yet, which
currently extends from StrutsSpringTestCase


Regards,

Miguel Almeida

Reply via email to