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

