The following blog outlines a solution for having test code depend upon the application directly. This seems like a somewhat elaborate workaround for what should be a fairly common case. Is there a better way?
http://blog.blundell-apps.com/android-gradle-app-with-robolectric-junit-tests/ On Thursday, July 24, 2014 5:39:59 PM UTC-7, Siva Velusamy wrote: > > Thanks for the test case. I understand your question now, and yes, I don't > think depending on an Android application would work. You'd either put your > tests inside your app itself, or create a jar. > > > On Thu, Jul 24, 2014 at 2:53 PM, Michael Wallstedt <[email protected] > <javascript:>> wrote: > >> I've attached a simple application that demonstrates the issue. With this >> example, if I invoke the gradle task project-test:compileDebugJava, the >> compilation fails with: >> >> /usr/local/google/home/mikewallstedt/dev/bigtop_android/test_proj_poc/project-test/java/com/google/example/test/MainTest.java:3: >> >> error: cannot find symbol >> import com.google.example.Main; >> ^ >> symbol: class Main >> location: package com.google.example >> /usr/local/google/home/mikewallstedt/dev/bigtop_android/test_proj_poc/project-test/java/com/google/example/test/MainTest.java:6: >> >> error: cannot find symbol >> private Main main; >> ^ >> symbol: class Main >> location: class MainTest >> 2 errors >> :project-test:compileDebugJava FAILED >> >> >> >> On Monday, July 14, 2014 6:20:49 PM UTC-7, Siva Velusamy wrote: >> >>> Could you provide a sample project that demonstrates this issue? Just a >>> simple "Hello world" app module and an additional test module would do. >>> >>> >>> On Mon, Jul 14, 2014 at 6:08 PM, Michael Wallstedt <[email protected] >>> > wrote: >>> >>>> I have a project with separate modules for several libraries, a >>>> module for the application, and another module for the tests. In the test >>>> module, there are references back to the application, which IntelliJ seems >>>> to handle just find (i.e. ctrl+click takes me where I expect). However, if >>>> I "make" the test module, there are several errors about missing symbols >>>> from the application. >>>> >>>> I assume that when gradle eventually calls out to javac, the classpath >>>> is missing a reference to the application source. Could this be because >>>> the >>>> application module is generated from the 'com.android.application' plugin, >>>> as opposed to 'com.android.library'? I suppose I could extract another >>>> library just for the source that is referenced in tests, and wrap that >>>> with >>>> a thin shell to create the actual application, but this seems rather heavy >>>> handed. Is there a better way? >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "adt-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "adt-dev" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected] <javascript:>. >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "adt-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
