Robotium和Sherlock - NoClassDefFoundError

时间:2012-10-08 12:04:51

标签: android exception testing android-actionbar robotium

我的项目中有测试问题。我已经正确配置了依赖项,但我无法使用Robotium运行测试。当我的活动扩展只是活动 - 一切都很好,当我添加“扩展SherlockActivity”然后我得到了

java.lang.RuntimeException: Exception during suite construction
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:238)

Caused by: java.lang.NoClassDefFoundError: com.calculator.Main (example project from Robotium www). 

我试图在Intellij和Eclipse中运行测试。两个IDE都给出了相同的结果。

编辑:这是我的清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.calculator.test"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">

    <uses-library android:name="android.test.runner" />
    </application>
    <uses-sdk android:minSdkVersion="8" />
    <instrumentation android:targetPackage="com.calculator" android:name="android.test.InstrumentationTestRunner" />
</manifest> 

2 个答案:

答案 0 :(得分:1)

看起来您使用正确的依赖项编译了您的类,但未在运行时指定它们。由于IntelliJ和Eclipse都应该使用相同的配置进行run编译,因此问题是:你是如何运行测试的?

答案 1 :(得分:0)

您使用的任何编辑器都没有问题。

这是从adb shell启动任何活动的一般语法:

adb shell am start -a android.intent.action.MAIN -n com.package.name/com.package.name.ActivityName

所以,当你从机器人调用任何活动时,它必须&#34;扩展活动&#34;。

和&#34;扩展了SherlockActivity&#34;由于上面的语法只需要Activity name,因此无法使用robotium。因此,如果你扩展任何其他东西,它将无法工作。

注意:

[1]首先尝试使用下面的语法

打开您的活动
adb shell am start -a android.intent.action.MAIN -n com.calculator/com.calculator.Main

这里&#34;主要&#34;是您的包装中的活动&#34; com.calculator&#34;。

[2]如果这对你有用,那么它将适用于robotium。

我希望这个概念会对你有所帮助。感谢。