Gradle 匕首&x2B;机器人分子+;格拉德尔+;APT-未为测试模块生成源
(问题可通过github回购协议获得) 编辑:这似乎是安卓apt与robolectric配合不好的问题gradle clean assembleDebugTest'将生成测试源,但'gradle clean test'不会。我认为需要修改安卓aptGradle 匕首&x2B;机器人分子+;格拉德尔+;APT-未为测试模块生成源,gradle,robolectric,apt,dagger,Gradle,Robolectric,Apt,Dagger,(问题可通过github回购协议获得) 编辑:这似乎是安卓apt与robolectric配合不好的问题gradle clean assembleDebugTest'将生成测试源,但'gradle clean test'不会。我认为需要修改安卓apt以适应这种情况 编辑2:我通过使用compile而不是apt、androidTestApt或提供的临时更改解决了问题。这个问题仍然是开放的,因为我们不应该在APK中包含这些内容 我目前在我的项目中有依赖项,需要Android APT插件。不幸的是,当应
以适应这种情况
编辑2:我通过使用compile
而不是apt
、androidTestApt
或提供的临时更改解决了问题。这个问题仍然是开放的,因为我们不应该在APK中包含这些内容
我目前在我的项目中有依赖项,需要Android APT插件。不幸的是,当应用APT插件时,我无法通过测试
以下是项目结构的简要概述:
src
├───androidTest/java/com.example.myapplication
│ ├───MyTest
│ ├───TestModule
│ └───TestMyApplication [extends Application]
│
└───main/java/com.example.myapplication
├───MyApplication
└───MyModule
TestMyApplication覆盖MyApplication中的getModules()
方法并添加TestModule
“我的依赖项”部分如下所示:
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'
}
然而,我在运行时仍然遇到一个错误:
java.lang.RuntimeException:java.lang.IllegalStateException:com.example.myapplication.TestModule类的模块适配器无法加载。请确保已为此模块运行代码生成
如果我禁用android apt
并使用provides
而不是apt
和androidTestApt
,一切都很好
值得注意的是,如果应用了android apt
插件,提供的
将不起作用
有关完整的来源,请查看我的回购协议,以说明此问题:
有3个分支机构:
master
,这是我想工作的原始案例
提供的
,它使用提供的
工作,并且禁用了android apt
插件
aptfail
,与上述情况完全相同,但应用了android apt
插件后失败
谢谢!要让答案被接受,就不能在dagger编译器中使用“compile”。我认为你的机器人电子测试不合适。Gradletest
运行普通的java单元测试,而assembleDebugTest
打包了在设备上运行的Android检测测试。android apt的插件支持后者。因此,即使您将测试移动到正确的位置,您也会遇到android-apt
没有挂接到java测试编译中的问题,这是一个悬而未决的问题。当你说android apt破坏了提供的时,那可能是一个bug。有很多关于Roboelectric和Android Gradle的文章,所以可能会有更多的问题。看看吧,我很确定测试在正确的地方。如果apt android无法支持这种可以理解的场景,但最近有人告诉我,“apt”配置基本上与“提供的”配置相同,只是“apt”使您能够配置编译器参数。我相信有一种方法可以实现这一点,但找到它肯定不是你的责任。别误会我的意思,我很想让它实现,但如果单元测试是为了实现这一点,那么对我来说就更有意义了。但是,您链接到的deckard项目在src/test/java
中有测试,这与您在这里描述的不同。本周我将在这方面投入一些时间,看看我能在安卓apt中做些什么来让它发挥作用。太棒了,我确实尝试过更改test dir的名称,但没有什么不同。谢谢你的关注!具有讽刺意味的是,我对使用compile而不是apt的“修复”使我超出了dex方法的限制。