1

考えられることはすべて試しましたが、それでも Robotium を使用してテストを実行できません。

ここで提案されているように、ロボティウムライブラリとメインプロジェクトをプロジェクト構成でエクスポートするように設定しました

ここで提案されているようにandroid:debuggableフラグを設定しましたtrue

ここでandroid:targetPackage提案されているように、マニフェストで適切に設定されていることも確認しました

また、テストモジュールをビルドするときに、メインプロジェクトの依存関係のスコープを変更しようとしましたProvided(それが何をするのCompileかわかりません...)

Test プロジェクトの AndroidManifest は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.matthieu.tests"
          android:versionCode="1"
          android:versionName="1.0">

    <uses-sdk android:minSdkVersion="4"
              android:targetSdkVersion="17" />

    <application
            android:debuggable="true">
        <uses-library android:name="android.test.runner"/>
    </application>

    <instrumentation android:name="android.test.InstrumentationTestRunner"
                     android:targetPackage="com.matthieu"
                     android:label="Tests for com.matthieu"/>
</manifest>

そして、ここに私が得る例外があります:

java.lang.RuntimeException: Exception during suite construction
at android.test.suitebuilder.TestSuiteBuilder$FailedToCreateTests.testSuiteConstructionFailed(TestSuiteBuilder.java:239)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:520)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
Caused by: java.lang.reflect.InvocationTargetException
at com.matthieu.MainMenuActivityTest.<init>(MainMenuActivityTest.java:26)
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:446)
at android.test.suitebuilder.TestMethod.instantiateTest(TestMethod.java:87)
at android.test.suitebuilder.TestMethod.createTest(TestMethod.java:73)
at android.test.suitebuilder.TestSuiteBuilder.addTest(TestSuiteBuilder.java:263)
at android.test.suitebuilder.TestSuiteBuilder.build(TestSuiteBuilder.java:185)
at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:373)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4218)
at android.app.ActivityThread.access$3000(ActivityThread.java:125)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4627)
at java.lang.reflect.Method.invokeNative(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com.matthieu.MainMenuActivity
... 19 more

logcat に次のようなエラーがいくつか表示されることにも注意してください。

01-04 14:44:51.822: WARN/dalvikvm(1263): Class resolved by unexpected DEX: Lcom/matthieu/MainMenuActivity;(0x44e7f980):0x249f70 ref [Lcom/actionbarsherlock/app/SherlockFragmentActivity;] Lcom/actionbarsherlock/app/SherlockFragmentActivity;(0x44e7f980):0x121770
01-04 14:44:51.833: WARN/dalvikvm(1263): (Lcom/matthieu/MainMenuActivity; had used a different Lcom/actionbarsherlock/app/SherlockFragmentActivity; during pre-verification)
01-04 14:44:51.851: WARN/dalvikvm(1263): Unable to resolve superclass of Lcom/matthieu/MainMenuActivity; (644)
01-04 14:44:51.851: WARN/dalvikvm(1263): Link of class 'Lcom/matthieu/MainMenuActivity;' failed
01-04 14:44:51.851: ERROR/dalvikvm(1263): Could not find class 'com.matthieu.MainMenuActivity', referenced from method com.matthieu.MainMenuActivityTest.testFirstTimeAppOpening
01-04 14:44:51.851: WARN/dalvikvm(1263): VFY: unable to resolve check-cast 849 (Lcom/matthieu/MainMenuActivity;) in Lcom/matthieu/MainMenuActivityTest;

違いがある場合は、IntelliJ Idea (11.1.5)、SDK 17、SDK Tools 21.0.1 を使用し、Robotium を 3.6 に更新しています。

更新

ここで関連する議論が 1 つ見つかりました。テストを 1 つだけ実行するか、すべてのテストを実行するかにかかわらず、さまざまなエラー メッセージが表示されます。私のアプリケーションは FragmentActivity を使用しています。しかし、私が何をしても、テストを実行することはできません (1 つではなく、すべてではありません)...

4

5 に答える 5

2

最後に....そこで機能させる唯一の方法を見つけまし

Robotium のテスト ケースを別のモジュールに保持しないでください...なぜそれを機能させる方法がないのかわかりませんが、実際に考えられること、または見つけられることはすべて試しました。

于 2013-01-07T09:52:13.627 に答える
0

同じ問題が再び発生しました (このページの他の回答を参照してください) が、今回は自分のソリューションでは問題を解決できませんでした。今回は別の解決策を見つけました:テストプロジェクトを右クリックしてテストプロジェクトのプライベートライブラリを削除し、次に

プロパティ -> Java ビルド パス -> ライブラリ

「Android Private Libraries」を削除する

PS私の答えは、このページで見つけた情報に触発されました: http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17

于 2014-02-26T21:29:50.077 に答える
0

私は同じ問題に直面しています。JUnitAndroidの代わりに を使用してプロジェクトをテストしようとしていたために発生しましたJUnit test

そのためには、テストプロジェクトを右クリックして > run as > Android Junit test . 私の場合はうまくいきます。

幸運を祈ります

于 2014-12-30T10:50:22.730 に答える