I don't understand what you are trying to do yet, but you might investigate 
putting your test classes in a fragment bundle (only loaded when testing, but 
then "part" of your main bundle) and also mocking the external input so it is 
under better control (although calling the result a functional test would be a 
stretch).

david jencks

On Dec 12, 2014, at 9:31 AM, Achim Nierbeck <[email protected]> wrote:

> Dynamic Import?
> Add a manifest header or dynamically importing your testclass in case it's
> available,
> but I would actually work with a service tracker that waits for the
> "testservice" to be available and trigger the "test" then.
> 
> regards, Achim
> 
> 
> 2014-12-12 15:24 GMT+01:00 Dean Schulze <[email protected]>:
> 
>> I don't think Pax Exam addresses my issue.
>> 
>> A little more explanation may help.
>> 
>> This system is driven by both external input and user input.  The
>> external input will be the same on each test run.  Controlling the
>> timing of the user input -- synchronizing it with the external input --
>> is the problem.  The typical unit test case is only driven by user input
>> so timing doesn't matter.
>> 
>> Think of triggering a calculation where your inputs change constantly.
>> The calculation is different each time and in order to verify it I have
>> to trigger the calculation at exactly the same times on each test run.
>> 
>> My test classes have to monitor the internal state of my application to
>> synchronize with the external input in order to make them repeatable.
>> Without that synchronization automated testing will be impossible.
>> 
>> I don't want to put the test classes into the production bundles which
>> is why I'm trying to load them dynamically when the system is under
>> test.
>> 
>> 
>> On Fri, 2014-12-12 at 08:38 +0100, Achim Nierbeck wrote:
>>> Hi,
>>> 
>>> just one quick question/hint.
>>> You are aware of the Pax Exam Testframework?
>>> I think with it you are able to do what you are looking for.
>>> 
>>> regards, Achim
>>> 
>>> 
>>> 2014-12-12 6:41 GMT+01:00 Dean Schulze <[email protected]>:
>>> 
>>>> 
>>>> I have an OSGI app consisting of several bundles.  In order to do
>>>> functional testing I want to dynamically load test case classes when
>> the
>>>> -Dtest.class.name=MyTestClass property is set.  I want to keep the
>> test
>>>> classes in their own bundle to make it easy to exclude them from the
>>>> production binary.  The only test artifact that will be in the
>>>> production code bundles will be an interface that the test classes
>>>> implement.
>>>> 
>>>> The test bundle depends on the production bundles to access the test
>>>> interface and because the test classes also use other classes in the
>>>> production bundles.  The test classes themselves are POJOs.  They are
>>>> not Serice or Component classes.  I only want to load them when the
>>>> test.class.name property is set so I don't want Felix injecting them.
>>>> 
>>>> I try to load the test class
>>>> 
>>>> public class MyTestClass implements MyTestClassI {
>>>>    ....
>>>> }
>>>> 
>>>> from the production bundle code like this
>>>> 
>>>> MyTestClassI myTestClass;
>>>> 
>>>> ....
>>>> 
>>>> //      Inside the @Activate method
>>>> String testClassName = System.getProperty("test.class.name");
>>>> if (testClassName != null) {
>>>> 
>>>>        Class c = Class.forName(testClassName);
>>>>        myTestClass = c.newInstance();
>>>> }
>>>> 
>>>> This gives a ClassNotFoundException.
>>>> 
>>>> The recommended solution that I've seen to this problem is to use the
>>>> Bundle.loadClass() method, but I haven't seen any example code that
>>>> actually does this.  I would have to get the test Bundle first and I
>>>> haven't been able to find out how to do this.
>>>> 
>>>> If anyone knows of example code to do dynamic class loading in Felix I
>>>> would appreciate a link to it.  If this kind of dynamic loading can
>> only
>>>> be done form the gogo shell I could live with that since this would
>> only
>>>> be done by the development and test teams.
>>>> 
>>>> Thanks.
>>>> 
>>>> Dean
>>>> 
>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>> 
>>>> 
>>> 
>>> 
>> 
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>> 
>> 
> 
> 
> -- 
> 
> Apache Member
> Apache Karaf <http://karaf.apache.org/> Committer & PMC
> OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
> Project Lead
> blog <http://notizblog.nierbeck.de/>
> Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>
> 
> Software Architect / Project Manager / Scrum Master


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to