Integration tests for MyFaces core
----------------------------------

                 Key: MYFACES-3217
                 URL: https://issues.apache.org/jira/browse/MYFACES-3217
             Project: MyFaces Core
          Issue Type: Task
    Affects Versions: 2.1.1, 2.0.7
            Reporter: Jakob Korherr
            Assignee: Jakob Korherr


Some time ago we already talked about the need for integration tests for 
MyFaces core in order to ensure the quality of MyFaces code, but we never 
created something for this. Now after successfully releasing MyFaces CODI 
v1.0.0 with a working integration-test concept, it is time to apply this 
concept also on MyFaces core.

The concept is simple: use an integration-test module that will be added to the 
MyFaces core build via profile (-Pintegration-tests) and thus will not be part 
of a release. This module consists of a support module containing general 
integration-test support classes (e.g. an abstract MyFacesIntegrationTest base 
class for all JUnit integration-tests) and various war-modules that contain the 
actual integration-tests.

The war modules use the cargo maven plugin to start and stop a specific 
container (e.g. jetty or tomcat) and HtmlUnit to run tests against the running 
server. The HtmlUnit tests are executed with the maven failsafe plugin to 
ensure container shutdown in error cases.

I already created three war-modules with the following configuration:
  - servlet 2.5 and el 1.0 (jetty 7)
  - servlet 2.5 and el 2.2 (jetty 6 and glassfish el)
  - servlet 3.0 and el 2.2 (tomcat 7)

These modules also already contain a very basic integration test, just as 
reference.

The plan is to put basic tests that do not need any special configuration into 
these modules and to create new special war-modules for tests that need a 
specific configuration (e.g. MyFaces core on tomcat 6 with bean validation and 
client state saving enabled and ....). In addition, I plan to create an 
archetype for these integration-test war-modules.

The long-term plan would be to have an integration-test for every jira issue on 
MyFaces core, thus implementing test-driven-development. With the complete 
infrastructure in place, it should not be very hard to create a test case for a 
jira issue (maybe even already by the user that reports the issue) and thus 
being able to fix issues a lot quicker and to ensure that new code or changes 
do not break anything.

I will create a wiki page describing this stuff in more detail, also giving 
examples on how to create modules and tests and on how to debug tests.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to