1

編集

さらに調査した結果、これにはant testコマンドも機能しないことが判明したため、IntelliJ の問題ではありません。

アプリの起動時に、問題が ormlite フレームワークとの間違ったリンクに起因することを示唆するいくつかの警告があります。

WARN/dalvikvm(22209): 予期しない DEX によって解決されたクラス: Lcom/example/android/app/noclassdef/module/dao/BaseBrowserDAO;(0x4051f5e8):0x98558 ref [Lcom/j256/ormlite/dao/Dao;] Lcom/j256 /ormlite/dao/Dao;(0x4051f5e8):0x97ec0

WARN/dalvikvm(22209): (Lcom/example/android/app/noclassdef/module/dao/BaseBrowserDAO; 事前検証中に別の Lcom/j256/ormlite/dao/Dao を使用していた)

WARN/dalvikvm(22209): クラス 'Lcom/example/android/app/noclassdef/module/dao/BaseBrowserDAO;' のリンク 失敗した

ただし、これはテスト プロジェクトでのみ発生し、メイン プロジェクトには問題はありません。

R17以降、jarは「本当に」libsディレクトリにある必要があることがわかったので、テストプロジェクトのlibsディレクトリにjarをコピーする必要があるかもしれませんが、何も変わりませんでした。

オリジナル

Android テスト プロジェクトが Android で実行されません。次のエラーが表示されます。

java.lang.NoClassDefFoundError: com.mycompany.android.module.shop.database.MyDBHelper
com.mycompany.android.module.shop.dao.DAOFactory.(DAOFactory.java:51) で
com.mycompany.android.module.shop.dao.DAOFactory.initSingleton (DAOFactory.java:58) で
com.mycompany.android.app.shop.test.EShopBaseTestCase.setUp(EShopBaseTestCase.java:41) で
android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) で
android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) で
android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) で
android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448) で
原因: java.lang.ClassNotFoundException: com.mycompany.android.module.shop.database.MyDBHelper ローダー dalvik.system.PathClassLoader[/system/framework/android.test.runner.jar:/data/app/com. mycompany.android.app.shop.test-1.apk:/mnt/asec/com.mycompany.android.app.shop-1/pkg.apk]
dalvik.system.PathClassLoader.findClass (PathClassLoader.java:240) で
java.lang.ClassLoader.loadClass(ClassLoader.java:551) で
java.lang.ClassLoader.loadClass(ClassLoader.java:511) で
... 12以上

テストはEclipseで問題なく実行されたので、構成の問題だと思います。

「不足している」クラスはアプリのソース クラスであり、jar ファイルや外部フレームワークにはありません。

私をさらに困惑させるのは、スタックトレース com.mycompany.android.module.shop.dao.DAOFactory が存在するのを見ることですが、com.mycompany.android.module.shop.database.MyDBHelper は存在しません (同じプロジェクトにあります... )

アイデアを持っている人はいますか?私はしばらくの間それに立ち往生しています。IntelliJでテストプロジェクトを使用するのは初めてではないので、構成を作業プロジェクトと比較しましたが、違いはまったく見つかりませんでした...

4

1 に答える 1

2

わかりました、実際に重要なメッセージは

[...] 別の Lcom/j256/ormlite/dao/Dao を使用していました。事前確認時

これは、メイン プロジェクトで適切にエクスポートされるのではなく、各プロジェクトでコピーされた ormlite jar を意味します。

jar の「エクスポート」チェックボックスをオンにするだけで状況が解決します。

FragmentActivityはActivityInstrumentationTestCase2 経由でテストできませんでした。

于 2013-02-01T14:17:41.927 に答える