小编Kio*_*tch的帖子

ClassCastException:NoClassDefFoundError无法强制转换为RuntimeException

我正在努力将我的代码库升级到Gradle 2.2和Android Studio 1.0.我目前正在尝试让Robolectric 2.4工作,但是当我尝试运行单元测试时,我遇到了一个奇怪的问题.问题只发生在gradle clean; 多次运行测试套件将产生通过测试(如预期的那样).当我在干净后运行测试时,我收到以下错误:

java.lang.ClassCastException: java.lang.NoClassDefFoundError cannot be cast to java.lang.RuntimeException
Run Code Online (Sandbox Code Playgroud)

我已经将错误追溯到此次调用:

Activity activity = Robolectric.setupActivity(MainActivity.class);
Run Code Online (Sandbox Code Playgroud)

我是否使用Robolectric gradle插件(org.robolectric:robolectric-gradle-plugin:0.14.0)或JC和K Android单元测试插件(com.github.jcandksolutions.gradle:android-unit-test:2.1.1)时遇到此错误.

我发现在Robolectric Github上引用了这个问题,但它看起来还没有得到解决:https: //github.com/robolectric/robolectric/issues/1385

这个问题也在android studio单元测试插件中引用,在'Trouble Shooting'下:https: //github.com/evant/android-studio-unit-test-plugin

我目前的示例代码在这里:https: //github.com/KioKrofovitch/robolectric-upgrade-test

我已经能够在Robolectric样本上运行api-android-16项目,但没有看到这个问题,尽管api-android-19和api-android-21项目由于其他原因而失败.我看不出他们做了什么不同的事情,这样他们就不会失败. https://github.com/robolectric/robolectric-samples

有人找到了解决方法吗?对Jenkins或Travis等CI工具进行两次运行测试并不是一个好的解决方法.

编辑:嵌入代码示例

我的顶级build.gradle,我添加了JC和K Unit测试库:

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
        classpath 'com.github.jcandksolutions.gradle:android-unit-test:2.1.1'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files …
Run Code Online (Sandbox Code Playgroud)

android gradle robolectric android-gradle-plugin robolectric-gradle-plugin

18
推荐指数
1
解决办法
2411
查看次数

Can Circle CI可以参考gradle.properties凭据吗?

我正在为Android项目设置Circle CI构建,并且想知道如何将gradle.properties文件添加到我的项目构建中.我使用本地gradle.properties来存储我的API密钥和敏感数据.其他CI工具(即Jenkins)允许您上传gradle.properties文件以在所有版本中使用,但我无法在Circle CI中找到这样做的方法.

似乎环境变量是Circle CI允许您向项目添加秘密凭据的唯一方式.

有没有办法在Circle CI构建中使用gradle.properties中的凭据?

continuous-integration android gradle circleci

8
推荐指数
2
解决办法
1645
查看次数

无法添加名称为"testCompile"的配置作为具有该名称的配置

更新到gradle插件1.1.0时,我不断收到以下错误

Cannot add a configuration with name 'testCompile' as a configuration with that name already exists
Run Code Online (Sandbox Code Playgroud)

我也使用来自Robolectric gradle这个插件在这里,v0.14.0.

新的gradle 1.1.0插件增加了额外的单元测试支持,所以我怀疑gradle和Robolectric插件正在争夺使用'testCompile',尽管我不知道如何解决这个问题.

android gradle android-gradle-plugin robolectric-gradle-plugin

5
推荐指数
2
解决办法
7874
查看次数