Android Studio 1.4不允许在Java测试模块上依赖Android模块。

4
我有一组测试(针对我的Android应用程序),可以在Android Studio中以Junit方式运行(右键单击testClass文件并运行)。 它依赖于Android模块,并使用Robolectric。 直到Android Studio 1.3.1,它都可以正常工作。
然而,当我迁移到Android Studio 1.4时,在同步Gradle文件时出现了警告。
Warning:Ignoring dependency of module 'app' on module 'unit-tests'. Java modules cannot depend on Android modules

由于所有的Android类(例如AppCompat)不再可检测,因此我的测试也无法被触发。

以下是我的gradle代码的一部分,其中:app是我的Android模块。

def androidModule = project(':app')

dependencies {
    testCompile androidModule
    //... some other dependency
    testCompile 'junit:junit:4.12'
    testCompile 'org.robolectric:robolectric:2.4'
    testCompile 'org.mockito:mockito-all:1.9.5'
    //... some other dependency
}

在同一个问题上找到了这个链接https://code.google.com/p/android/issues/detail?id=188880&q=label%3AReportedBy-Developer&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

如果这是新的Android Studio 1.4行为,我的gradle文件有问题,还是只是新的Android Studio 1.4 bug,请问有人能够解释一下吗?


1
有趣的是,'org.robolectric:robolectric:2.4' 也会出现这种情况。我使用的是 robolectric v3.0,同样失败了。 - CJBS
2
我也升级到了Android Studio v1.5预览版,但它仍然无法工作。 - CJBS
1
这真是糟糕透顶... 真不敢相信 - worked
哎呀,@worked,这真是一个巨大的倒退。正因为如此,我还在坚持使用1.3.1版本...也许你可以考虑给上面的问题/议题点赞,以便引起更多关注。 - Elye
似乎在2.0预览版中仍存在相同的问题。 - Elye
1个回答

4

解决方法

回退至Android Studio v1.3.1

由于Robolectric尚未修复此问题,唯一可行的解决方法是回退至上一个已知可用的版本:Android Studio v1.3.1。

该版本可以从以下链接下载:http://tools.android.com/download/studio/stable

使用Gradle执行单元测试

另一种方法是通过命令行直接在Gradle中运行单元测试。在项目的根目录中(与settings.gradle和local.properties文件位于同一目录下),运行以下命令:

 ./gradlew test

很酷,谢谢CJBS!这些都是我现在正在使用的解决方法。感谢确认。点赞并勾选它 :) - Elye

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接