6

Android アプリケーションで使用するために特別に開発したかなり大きなライブラリがあります。ただし、ビジネス ロジック自体は Android に依存しません。それを維持するために、このライブラリ全体で Commons Logging を使用しました。これは、それぞれの JUnit テスト (Eclipse で実行) です。

ただし、Androidで起動するアクティビティに統合し始めたので、ログを機能させることができません。Eclipse/JUnit では、単純に log4j の jar ファイルと log4j.properties ファイルを取り込んでいました。これは、デバイスに展開するときに機能しないようです。それを機能させるのに数時間苦労した後、あきらめて、すべてのコモンズのログ記録を android.util.Log に置き換えてみました。デバイスにログオンできるようになりましたが、すべての JUnit テストが壊れています。JUnit が android.util.Log を使用してログを記録しようとすると、RuntimeException 'Stub!' がスローされます。

コモンズ ロギング アプローチに戻りたいと思います..誰かがそれを手伝ってくれるなら..そうでなければ..「android.util.Log」を使用して JUnit テスト ケースを実行するにはどうすればよいですか?

事前に多くの感謝..私はこれに数時間以上を費やしました。また、実際のコードを書きたいと思います!

4

5 に答える 5

5

Qberticus が言及しているように、commons-logging は Android 内で機能します。commons-logging ライブラリを Android プロジェクトにドロップし、メッセージを INFO レベルでログに記録することで、これを確認しました。Commons-logging はデフォルトで Jdk14 ロギング フレームワークになり、これが Android Logging サブシステムに渡され、結果が logcat で表示されます。タグは、ログが使用されるクラスに設定されます。たとえば、ログを使用するLogFactory.getLog(Foo.class)と、「Foo」というタグが付けられます。

于 2011-04-09T14:34:39.243 に答える
4

Android atm 用の log4j ポートがあるとは思えません。ただし、Android には java.util.logging が組み込まれており、commons ロギングは .xml 経由で接続できJdk14Loggerます。Commons ロギングが android で機能する場合は、おそらく問題ありません。

于 2010-06-17T05:50:28.153 に答える
1

ポールの解決策は私にはうまくいきませんでした。たまたま、commons logging jarがすでにSDKに含まれているため、コンパイル時に競合が発生しました。私の問題は、それに対してコンパイルできなかったことです。

追加:

extensible.classpath=${sdk.dir}/tools/lib/commons-logging-1.1.1.jar

私のant.propertiesにトリックをしました。

于 2012-01-31T14:25:23.747 に答える
1

プラットフォームに応じて、プラットフォームで一般的なロギングへのデリゲートをインスタンス化する独自のロガー用のインターフェイスを構築できます。作業とデバッグを行っている限り、これで十分なはずです。後でデバイスの製品コードで、何もしないロガーを挿入するだけで、電話ログを乱雑にするために必要なすべての時間を節約できます。

于 2010-06-17T07:55:02.870 に答える
0

Androidでlog4jを有効にする新しいプロジェクトがあります。slf4j で log4j を使用することは可能です。また、LogCat のアペンダーも提供します。プロジェクトandroid-logging-log4jまたはandroid での log4j サポートを参照してください

于 2011-11-20T07:53:30.423 に答える