Dagger + Robolectric + Gradle + APT - source not generated for test module
(The question is available as a github repo here )
Edit: It looks like this is an issue with Android app not playing nicely with robolectric. 'gradle clean assembleDebugTest' will generate test sources, but 'gradle clean test' will not. I think android-apt
it will need to be changed to work in this case.
Edit 2: I solved my problem by temporarily changing the usage compile
instead of apt
, androidTestApt
or provided
. This question will remain open, although we should not include this material in our apkies.
I currently have a dependency on a project of mine that requires the Android APT plugin. Unfortunately, I can't get the test to pass when the APT plugin is applied.
Here's a quick overview of the project structure:
src
├───androidTest/java/com.example.myapplication
│ ├───MyTest
│ ├───TestModule
│ └───TestMyApplication [extends Application]
│
└───main/java/com.example.myapplication
├───MyApplication
└───MyModule
TestMyApplication overrides the method getModules()
in MyApplication and adds TestModule.
My dependencies section looks like this:
dependencies {
compile 'com.squareup.dagger:dagger:1.2.2'
apt 'com.squareup.dagger:dagger-compiler:1.2.2'
androidTestApt 'com.squareup.dagger:dagger-compiler:1.2.2'
androidTestCompile 'junit:junit:4.11'
androidTestCompile 'org.robolectric:robolectric:2.3'
}
However, at runtime, I get the error:
java.lang.RuntimeException: java.lang.IllegalStateException: The module adapter for the com.example.myapplication.TestModule class could not be loaded. Make sure code generation has been started for this module.
If I disable android-apt
and use provides
instead of apt
and androidTestApt
, everything is fine!
Notably, it provides
doesn't work if a plugin is used android-apt
.
For the full source, please check out my repo here to illustrate this issue: https://github.com/jacobtabak/Robolectric-Dagger-Skeleton
There are 3 branches -
-
master
which is my initial case that I want to work -
provided
which works usingprovided
and disabled pluginandroid-apt
-
aptfail
which is the same case as above, except that the plugin is appliedandroid-apt
, which fails.
Thank! For an answer to be accepted, it should NOT use "compile" for the dagger compiler.
source to share
No one has answered this question yet
Check out similar questions: