Two workarounds that partially solve the problem

1) move the implementation classes to another project outside main
android project and include it (this project may include android.jar
as a library)
2) move tests into the main project and adjust main manifest file
accordingly.

On Nov 18, 9:20 am, emitya <[email protected]> wrote:
> Thanks for response. Tried that but getting same consistently broken
> result -> if the interface is defined inside included Jar while the
> implementation class lives in Android project, then Android test
> runner cannot instantiate instances of that particular class. It can
> instantiate anything else either in Jar or in main android project by
> itself without a problem.
>
> On Nov 18, 6:11 am, Diego Torres Milano <[email protected]> wrote:
>
> > You should create jars for your libraries and include them in
> > project's Properties -> Java Build Path -> Libraries.
> > Hope this helps.
>
> > --
> > Have you read my blog ?http://dtmilano.blogspot.com
> > android junit tests ui linux cult thin clients
>
> > On Nov 18, 6:30 am, emitya <[email protected]> wrote:
>
> > > Hi,
>
> > > I have a question on the project set-up - this may be a bug in SDK.
>
> > > I cannot run android junit tests for classes sitting in main android
> > > project that implement interfaces that reside in other included
> > > projects. Depending on SDK version I get different errors: from "Test
> > > run failed:" on 1.5 and 1.6 and spurious process death to a more
> > > polite "NoClassDefFoundError" on SDK 2.0. This happens only on
> > > instantiation of classes that reside in the Android project and
> > > implement interfaces residing outside that android project. There is
> > > no problem instantiating classes that do not fall into this category
> > > (i.e. android only or library only classes).
>
> > > Android project by itself works fine with these classes - it is just
> > > the test set-up doesn't and project inclusion/classpath seems to be
> > > ok. Test project includes all projects that main project includes.
> > > NoClassDefFoundError makes little sense here given that the
> > > classloader can see and instantiate classes sitting right next to the
> > > ones that do not work.
>
> > > Did anyone else run into this or found a way to set-up android based
> > > tests in a multi-project set-up?
>
> > > Below is more detailed set-up and test explanation:
>
> > > 1)
> > > Library project: FooLib
> > > public interface IFoo {
> > > ...}
>
> > > public class FooImpl implements IFoo {
> > > ...
>
> > > }
>
> > > 2)
> > > Main project: AndroidFoo
> > > public class FooAndroidImpl implements IFoo {
> > > ...}
>
> > > public class Bar {
> > > ...
>
> > > }
>
> > > 3)
> > > Test Project: AndroidFooTest
> > > public class FooTester extends AndroidTestCase  {
>
> > >   // breaks
> > >   void test1AndroidImplWithInterfaceInLibraryProject() {
> > >      Object o = new FooAndroidImpl();   // Gets NoClassDefFoundError
> > > on SDK 2.0 and obscure "Test run failed" on 1.6 and 1.5
> > >    }
>
> > >   // works
> > >   void test2AndroidOnly() {
> > >      Object o = new Bar();   // works fine -> no exceptions even
> > > though the class sits in the same package as the one that was throwing
> > > exceptions in case 1
> > >    }
>
> > >   // works
> > >   void test3LibraryProjectOnly() {
> > >      Object o = new FooImpl();   // works fine -> no exceptions even
> > > though the class sits in the same package as interface of the test1
> > >    }
>
> > > }
>
> > > Thanks in advance.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to