为什么在ActionBarActivity上运行测试时会出现NoClassDefFoundError?

时间:2015-04-09 10:11:02

标签: java android unit-testing robotium android-actionbaractivity

所以我使用的是Robotium,我的测试类正在扩展ActivityInstrumentationTestCase2类。我已经在我的主项目中导入了v7支持库,并在测试项目中导入了库。

现在我不明白的是,当我更改受测试的类以扩展Activity时,测试类正在工作,但当我将其更改为ActionBarActivity时,它返回NoClassDefFoundError

我错过了什么吗?

这是我正在获取的日志

04-11 21:32:16.551: E/dalvikvm(23925): Could not find class 'com.example.project.ActivityClass', referenced from method com.example.project.tests.ActivityClass.<init>

3 个答案:

答案 0 :(得分:4)

确保导出测试项目中引用的v7支持库。

右键单击测试项目,properties-&gt; java build path-&gt; order and export选项卡。

有关示例,请参阅此处“安装”部分下的第5步:http://www.stevenmarkford.com/android-ui-testing-with-espresso-basics-tutorial/(虽然这显示了如何导出espresso库,但在这种情况下也是如此)

答案 1 :(得分:2)

我认为你的库v7 app compat存在导入问题。

试试这个:

  • "sdk/extras/android/support/v7/appcompat".

  • 导入支持库作为项目
  • 项目中的参考库(对于Eclipse,"Properties - Android - Add")。

  • 构建项目(对于Eclipse,"Projects - Build All")。确保您的主项目gen文件夹中有"android.support.v7.appcompat"

如果仍然无法解决您的问题,请重启eclipse并清理并重建项目

如果问题仍然存在,请从您的计算机中删除支持库并重新下载并按照上述步骤操作。

答案 2 :(得分:0)

build.gradle中的此代码为我解决了类似的问题:

configurations {
    androidTestCompile.exclude group: 'com.android.support', module: 'support-v4'
}

更多here