Hi!
Another round of discussion - this time about how to setup our unit testing and
integration testing.
I think it's pretty much clear that we will gonna use Arquillian for all our
tests. That was also fundamental part of the incubator proposal.
And instead of inventing yet another abstraction layer, I'd favour to just use
Arquillian and contribute all things we need to this project.
So here a formal vote
1.)
for using Arquillian as test integration framework.
+1 from me
2.)
What do we like to use from the unit tests itself? TestNG or JUnit?
JUnit has better Arquillian integration and TestNG is better for 'real world'
projects, because it allows to define test dependencies.
So which one to take?
But we should definitely only use 1 of the two exclusively!
3.)
'Integrated' tests vs 'Integration Tests'
We have 2 options to test our projects
3.a.) create a full unit test in each module (e.g. deltaspike/core/impl) and
add a profile for each and every server (maybe we can trim this down with pom
imports?).
Then run the build with one after each other:
$> mvn clean test -Powb
$> mvn clean test -Pweld
$> mvn clean test -Powb-tc
$> mvn clean test -Pweld-tc
$> mvn clean test -Pgf31
$> mvn clean test -Pas7
$> mvn clean test -Ptomee
This might pretty much blow up our poms...
3.b) create a full unit test in each module (e.g. deltaspike/core/impl) and add
only 2 profiles directly ('weld' and 'owb' (probably resin later))
Then add a deltaspike/test/base/core with the very basic parent stuff and 1
module for each integrated container, e.g.
deltaspike/test/weld-tc
deltaspike/test/owb-tc
deltaspike/test/weld-jetty
deltaspike/test/owb-jetty
deltaspike/test/tomee
deltaspike/test/gf31
deltaspike/test/geronimo
deltaspike/test/websphere
deltaspike/test/as7
deltaspike/test/as6
etc.
The initial setup costs are higher, but it would be pretty easy to add new
containers that way.
Which route shall we take?
LieGrue,
strub