Robolectric and Android Studio 1.1.0 and library testing

I'm having problems getting my Robolectric unit tests to run as part of the AS 1.1 test pilot. The error I am getting is shown below;

java.lang.NoClassDefFoundError: com/my/app/R$string
    at com.my.app.MoneyFormatter.formatDealMessage(MoneyFormatter.java:63)
    ...
Caused by: java.lang.ClassNotFoundException: com.my.app.R$string
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at org.robolectric.bytecode.AsmInstrumentingClassLoader.loadClass(AsmInstrumentingClassLoader.java:100)
    ... 46 more

I am extracting this error by executing the root (app-name in Snippet1) command from the command line;

./gradlew core:library:test

This approach works in Android Studio 1.1 without enabling unit testing and using the android gradle toolkit in version 1.0 (com.android.tools.build:gradle:1.0.0).

Project configuration

My project has a complex structure as follows:

app-name
 |
 | -> app
    | -> src
       | -> androidTest // Espresso helper classes reside here
       | -> androidTestFlavour1 // Espresso int tests relating to 'flavor 1' 
       |-> androidTestFlavour2 // Espresso int tests relating to 'flavour 2'
       |-> flavour1
       |-> flavour2
       |-> main
           + AndroidManifest.xml // Manifest for apps
       |-> testFlavour1 // Robolectric unit tests for flavour 1
       |-> testFlavour2 // Robolectric unit tests for flavour 2
 |->core
       |->library
           |-> src
              |-> main // Library code resides here
                  + AndroidManifest.xml
              |-> test // Robolectric unit tests for library
 +gradle
 +gradlew
 +settings.gradle
 +local.properties

1:

Pivotal Labs home- brew .

, ?

Update: , , , :

  • /workspace/app/core/lib/build/intermediates/bundles/debug/classes.jar
  • / // ​​/Library/////
  • / // ​​/Library/// //

R$string.class, , . , "R" , . ,

  • / // ​​/Library////
  • / // ​​/Library////

, , "" "". , Java- ( classes.jar) .

+4
1

OK! . build gradle "R" ;

sourceSets {
  test.java.srcDirs += "build/generated/source/r/debug"
}

Robolectric:

./gradlew core:lib:test

Espresso 2.0 ;

./gradlew connectedAndroidTest

IDE.... , ? 7 ?! . Kudos to , , .

+5

All Articles