单元测试和joda-time-android

时间:2016-05-12 15:15:58

标签: android jodatime mosby

我在我的Presenter类中使用了joda-time-android库的类,并且它必须没有任何Android依赖项。所以我无法正确测试它。我知道我可以使用Robolectric,但我希望不使用此工具并清除Presenter。我应该放弃JodaTime吗?还有其他解决办法吗?

2 个答案:

答案 0 :(得分:10)

对于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的答案。

答案 1 :(得分:2)

好吧,joda-time-android确实依赖于Android运行时才能运行。使用Robolectric似乎是一个不错的用例,因为您不会与Android SDK中的FragmentActivity和其他UI类进行交互。

由于设置Robolectric是一种痛苦,还有另一种选择 - 您可以使用Adapter pattern为常规Java Joda时间库和Android版本创建公共接口。

如果可行且实用(取决于您希望使用的Joda时间API的数量),您可以在运行应用时使用Adapter备份joda-time-android,并使用{{ 1}}运行单元测试时。我想你可以使用joda-time的{​​{1}}方法中的Android具体实现和单元测试Application中的Java具体实现。