I agree, for a future version of Maven. What I think is needed is
reusable test lifecycles so you get the source directory, compilation
and resources sequence, and then the run.
You might also like to look at the slides from my talk at ApacheCon
that cover the two alternatives that are available today: http://www.us.apachecon.com/c/acus2008/sessions/50
Cheers,
Brett
On 17/11/2008, at 1:08 AM, nicolas de loof wrote:
Hi,
First of all, please don't blame me for my horrible english. I'm
french, and
french guys are known for beeing poor foreign language speackers...
maven default lifecycle defines integration-test phase, but AFAIK
there is
no consensus (yet) on how to use it. Some wiki doc help to setup a
maven/surefire hack to split test into unit / integration based on
naming
conventions, but nothing better.
I'd like to suggest some convention and maybe plugins enhancement to
support
integration tests in a common way.
*What's an IT test ?
*Just to keep things clear, I thing "intergation-test" is a far too
large
word. Some of us consider tests that require a container (typically,
war
deployed and selenium test), some other consider tests that require
host or
network resources (DataBase-related tests) and others simply tests
that
require complex setup and not just "unit" scope, like GWTTestCase or
Spring-related ones that start an ApplicationContext.
Based on this, I don't thing we can define a 100% consensus on how
to define
and run IT tests with maven. I'll focus on the simpliest use case :
tests
written in Java that you don't want / can't run before packaging. I
suppose
the pre-integration test phase is enough to setup all required
infrastructure to get IT test running.
*What's wrong with the existing solutions ?
*Even it works in many cases, I don't like the Test naming
convention hack
to use a shared target/test-classes for all tests
- there is no way to distinguish unit and IT resources
- there is no nice distinction between unit and IT tests.This
doesn't
help newbee developpers to understand the role of such code
- hey, this really looks like an ugly maven hack ! We should
support IT
tests with no configuration as we support compilation and unit
tests with a
minimal POM.
*What is missing in maven ?*
- there is no convention for an IT-tests source directory.
- there is no maven-compiler-plugin Mojo to handle such java
sources,
with a dedicated output folder
- there is no maven-resources-plugin Mojo to handle resources
dedicated
to IT tests
- there is no maven-surefire-plugin Mojo to run them
*What can we do ?*
Define a dedicated directory for IT tests. As a new XML element in
POM would
require to change the ModelVersion with compatibility issues, I'd
suggest to
define a standard property
project.build.integrationTestSourceDirectory (the
same way we did for encoding), with default value to
src/integration-test/java. Same for IT resources
Either define new Mojos in compiler, resources and surefire plugins
(that
would require 3 new releases), or create a new
maven-integration-tests-plugin to share code from those 3 plugins
and handle
the whole process :
compile integrationTestSourceDirectory to target/integration-tests-
classes
copy IT resources to target/integration-tests-classes
run tests found in target/integration-tests-classes, with target/
classes and
target/test-classes in classpath.
Any suggestion, feedback or link to an existing solution is welcome
Cheers,
Nicolas
--
Brett Porter
[EMAIL PROTECTED]
http://blogs.exist.com/bporter/
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]