2016-04-23 13 views
0

からログインに書き込む方法は、私はMVPパターンを持つアプリケーションを構築するためにMosbyを使用しています。これはルールの1つです:MVP:プレゼンター

Presenterでアンドロイドライブラリコードを使用しないでください。

しかし、私は、プレゼンターから何かをログに記録したい場合は?私が見る唯一の方法はSystem.out.println();を使用することですが、それは良いとは言えません。何か案が?

答えて

5

PresenterでAndroidライブラリコードを使用しない理由は、単体テストを書くときにクラスのAndroidコードに依存しないため、JVM上で直接実行できるためです。

あなた自身が、私はこれを行う方法は、インターフェースの後ろにそれを隠すことであるその後、Androidのコードを使用する必要が判明した場合。こうすることで、実動コードで1つの実装を使用し、テストで別の実装を使用できます。

だから、ロガーと呼ばれるインタフェースを作成:

public class LoggerImpl implements Logger { 

    public void logd(String tag, String message) { 

     Log.d(tag, message); 
    } 
} 

しかし、あなたは、あなたが別の実装を使用することができますテストを実行している:あなたが使用できる本番コードの後

public interface Logger { 

    void logd(String tag, String message); 
} 

public class LoggerTestImpl implements Logger { 

    public void logd(String tag, String message) { 

     System.out.println(tag + " " + message); 
    } 
} 

あなたのプレゼンターのコンストラクタにロガーの依存関係を追加します。実行時にLoggerImplを与え、テスト中にLoggerTestImplを与えます。

まず、プレゼンターからの多くのログを実際に行う必要があるかどうかを検討することができます。 Android Studioでは、コードを一時停止しないブレークポイントを持つことができ、ヒットしたときにデバッグコンソールにメッセージを記録します。しかし、これはもちろんあなたの要件に依存します。

+0

受け入れ可能な解決策。ブレークポイントについての優れた機能。ありがとう。 – Alexandr

+0

Android.util.Logメソッドを使用するサードパーティライブラリ/外部コードを含めるとどうなりますか? – Zach

関連する問題