我正在努力将我的代码库升级到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
我正在为Android项目设置Circle CI构建,并且想知道如何将gradle.properties文件添加到我的项目构建中.我使用本地gradle.properties来存储我的API密钥和敏感数据.其他CI工具(即Jenkins)允许您上传gradle.properties文件以在所有版本中使用,但我无法在Circle CI中找到这样做的方法.
似乎环境变量是Circle CI允许您向项目添加秘密凭据的唯一方式.
有没有办法在Circle CI构建中使用gradle.properties中的凭据?
更新到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