[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [equinox-dev] Testing OSGI Bundles with JUnit



Thanks Alin for your answer.


I have tried what you told me in your email.


I have downloaded



and I followed : http://wiki.ops4j.org//x/f4Cr.


These were my steps:

1.       I added the jars previously mentioned in ClassPath (Environment Variables)

2.       I created a MyTestClass as shown below:


import ….


@RunWith( JUnit4TestRunner.class )

public class MyUnitTest




    BundleContext bundleContext;



    public static Option[] configuration()


        return options(










    private ServiceTracker tracker;


    public void testMethod()

        throws Exception


      tracker = new ServiceTracker(bundleContext, MyServicetobeTEsted.class.getName(), null);



            MyServicetobeTEsted service = (MyServicetobeTEsted) tracker.getService();


            org.junit.Assert.assertTrue(service.addValue("Nivel", 5));







3.       I have exported my TestProject in Eclipse as a jar or bundle(I did this in the same way I exported my other Bundles using Eclipse, I mean, I have exported my TestProject, which have a package where there is just one class (MyUnitTest), and there is no Activator class at all.

4.       I have launched Equinox with MyServicetobeTEsted already installed

5.       I have installed my TestProject Bundle

6.       I have started my TestProject bundle but I did not get any result at all. I do not get any exception neither.




Am I missing anything?


I have some questions about Pax Exam now:


-Is it possible to get with Pax Exam the same Visual Interface than JUnit uses?

-Where do I get the result from testing?

-Do I  have to create Activator class with start method to my TestClass?


What does it mean that I have to built the TESTBUNDLE on the fly?
Thank you in advance







De: equinox-dev-bounces@xxxxxxxxxxx [mailto:equinox-dev-bounces@xxxxxxxxxxx] En nombre de Alin Dreghiciu
Enviado el: viernes, 15 de mayo de 2009 22:57
Para: Equinox development mailing list
Asunto: Re: [equinox-dev] Testing OSGI Bundles with JUnit


I think an user guide for using Px Exam with Eclipse will be very useful. If Toni does not do it before me, I will during this weekend.

Till then the what you can do is to:

1. Add this jars to your classpath (take latest)


On Fri, May 15, 2009 at 11:42 AM, David Conde <dconde@xxxxxxxx> wrote:

Hi Toni,

Thank you for your idea!

I have Reading about Pax Exam and  I am not clear about what exactly I have
to do for installing and using it in Equinox.

I would like to test a simple Bundle which uses Preference Service from
Equinox. I do not use neither Maven nor other containers, just Equinox v34.

As I have read in Pax Exam website, If I want to test my Bundle I should
create a Test Class similar to T1S2_HowToUseBundleContext example, I
thought, my Test Class should implements TestCase class but I do not see any
TestCase implementation in examples so I suppose that using "@RunWith(
JUnit4TestRunner.class )" it is enough. I asume either that I should also
include the next piece of code inside to fix Equinox as framework:

public Option[] configure() {
return options(

Either I would have to fix @test in each method which I would like to test.

Finally I suppose that I would have to add pax-exam-junit.jar from
) and junit.jar from (JUnit website) to the classpath.

So if I am not wrong, the steps to test a Bundle in Equinox would be like as
shown below:

1-Include pax-exam-junit.jar and junit.jar in ClassPath
2-Create a new Bundle which will create a MyTestClass instance (with
“@RunWith( JUnit4TestRunner.class )" included.
3-Call to Preference Service from BundleContext object as the same way as I
did using the real Context in real bundles.
4- Launch Equinox with all the Bundles

And now, my questions are? HOw BundleContext can call to
bundleContext.getBundles method if it was defined as null in
T1S2_HowToUseBundleContext example?

Could I call for example

I either would like to ask about the results, how do I get test results? Is
it possible to use junit.swingui.TestRunner in order to get results as a
visual interface?

Thank you in advance


-----Mensaje original-----
De: equinox-dev-bounces@xxxxxxxxxxx [mailto:equinox-dev-bounces@xxxxxxxxxxx]
En nombre de Toni Menzel
Enviado el: jueves, 14 de mayo de 2009 12:06
Para: Equinox development mailing list
Asunto: Re: [equinox-dev] Testing OSGI Bundles with JUnit

Have you had a look at pax exam
(http://wiki.ops4j.org/display/paxexam/Pax+Exam) ?

It actually lets you write Junit Tests in OSGi Framework independent way.
You finally wrap your test in a test probe bundle (built on the fly),
start your target framework (equinox in this case), provision it with
you setup (extra bundles), and thats about it.

IF you use PDE (because you pointed to the fact you are using eclipse
a couple of times):
Without external means like maven you probably end up re-specifiying
all your dependencies again just for test setup.

Tell us if you do or not as it might help us a lot to get you started
with pax exam.

Finally, in exam you end up inside an isolated vm process running just
your test vm with your test framework
(Equinox,Felix,Knopflerfish,Concierge, all recent versions at you
fingertipps) exactly as specified. From there you (currently) get the
(real!) bundleContext from where you probably get any service you


On 5/14/09, David Conde <dconde@xxxxxxxx> wrote:
> Hi everyone,
> I am trying to do test cases for OSGI Bundles in Equinox, using Eclipse. I
> found the problem when I tried to model BundleContext and services like
> Preference Services, which are complex objects. I read about how I could
> solve this problem and I found some libraries from Spring Framework which
> use “mocks” to test BundleContext, but I am not sure if these ones
> special Services likes Preference services. So, my question is , is there
> any library with mocks to simulate BundleContext and other complex Equinox
> classes? Is there any library provided by Equinox?
> Thank you in advance
> --
> David Conde Baena
> Centro Andaluz de Innovación y Tecnologías de la Información y las
> Comunicaciones
> Edificio CITIC, C/ Marie Curie, 6
> Parque Tecnológico de Andalucía
> 29590 - Campanillas (MÁLAGA)
> Tfno.: +34 952028610
> Fax: +34 951231029
>  <mailto:usuario@xxxxxxxx> Email: dconde@xxxxxxxx
>  <http://www.citic.es/> Web: www.citic.es

Toni Menzel
Independent Software Developer - Looking for new projects!
Professional Profile: http://www.osgify.com
Blog: tonitcom.blogspot.com
http://www.ops4j.org     - New Energy for OSS Communities - Open
Participation Software.
equinox-dev mailing list

equinox-dev mailing list

Alin Dreghiciu
Software Developer - Looking for new projects!
My profile: http://www.linkedin.com/in/alindreghiciu
My blog: http://adreghiciu.blogspot.com
http://www.ops4j.org - New Energy for OSS Communities - Open Participation Software.
http://www.qi4j.org - New Energy for Java - Domain Driven Development.