I am currently trying to upgrade several aries modules to pax exam 3.
Most of the test code works fine with the new pax exam and I already
finished some modules. There is one aspect though that seems to be
difficult to support.
Some of the current tests seem to run against more than one version of
the framework. See
https://github.com/apache/aries/blob/trunk/proxy/proxy-itests/src/test/java/org/apache/aries/proxy/itests/BasicProxyBundlesTest.java
for an example.
In pax exam 3 the framework is not specified using an Option like
equinox().version("3.5.0") .
Instead the framework and version is specified as a maven dependency. As
maven does not allow to specify one dependency in more than one version
it is not easy to specify an OSGi framework in two or more versions.
One solution is to use a profile for the dependency of each framework.
So the test can be run with several profiles to cover the different
versions.
The problem here is that it is complicated to make maven run each
profile for a default build. Pax exam uses the maven invoker plugin to
support this case.
https://github.com/ops4j/org.ops4j.pax.exam2/blob/master/itest/osgi/pom.xml
This means though that the real itest project has to be nested inside
the outer itest wrapper pom that we see above. So I would rather not
like to go this way.
Does anyone have a good solution for this? Would it perhaps be ok that
we just test with one framework version by default and allow to switch
to others with a profile that has to be set manually?
I am investigating if options like equinox().version() can be added to
pax exam 3 again. At least for the forked container I think it may work
to add the different framework jars to the classpath of the forked jvm.
This would mean some bigger effort though and I am not sure if the pax
exam team likes it. (Will discuss this with Harald).
I would be glad about any suggestions.
Christian
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com