2016-05-12 7 views
3

Presenterクラスにjoda-time-androidライブラリのクラスを使用しました。これにはAndroidの依存関係は一切ありません。だから私はそれを正しくテストすることはできません。私はこのためにRobolectricを使用できることを知っていますが、私はこのツールと私のPresenterをきれいにしておきたいと思います。私はJodaTimeを放棄すべきですか?他の解決策?ユニットテストとjoda-time-android

答えて

8

Unit-testsの場合、JodaTimeのライブラリのデフォルトのJava実装は、joda-time-androidと同じパッケージとクラスを持つため使用できます。

// for android 
compile 'net.danlew:android.joda:2.9.3' 

// joda-time for tests 
testCompile 'joda-time:joda-time:2.9.3' 

チャームのように機能します。

他のライブラリの場合は、@npaceの回答を参照してください。

2

まあ、joda-time-androidは、動作させるためにAndroidランタイムに依存します。 Fragment,ActivityなどのAndroid SDKの他のUIクラスとやりとりすることはないため、これにはRobolectricを使用すると大丈夫です。

Robolectricの設定は痛みです。別のオプションがあります。Adapter patternを使用して、通常のJava JodaタイムライブラリとAndroidバージョンの共通インターフェイスを作成できます。

ことが可能と実用的だ場合

、あなたはバックアップすることができます(使用したいどのくらいのジョダ時間APIのに応じて)あなたの Adapterアプリを実行すると、ユニットテストを実行するとき joda-timeでそれをバックアップするとき joda-time-androidと。 ApplicationonCreate()メソッドのAndroid具体的な実装と、ユニットテストの @BeforeのJava具体的実装を使用するようにすることができます。

+0

私は 'Log'クラスにアダプタパターンを使用しました。しかし、JodaTimeの場合は、書き込むインターフェイスが多すぎます。あなたの答えはより洗練されたソリューションに私を押し込んだ。 – Alexandr

関連する問題