我在我的Presenter
类中使用了joda-time-android
库的类,并且它必须没有任何Android依赖项。所以我无法正确测试它。我知道我可以使用Robolectric
,但我希望不使用此工具并清除Presenter
。我应该放弃JodaTime吗?还有其他解决办法吗?
答案 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中的Fragment
,Activity
和其他UI类进行交互。
由于设置Robolectric
是一种痛苦,还有另一种选择 - 您可以使用Adapter pattern为常规Java Joda时间库和Android版本创建公共接口。
如果可行且实用(取决于您希望使用的Joda时间API的数量),您可以在运行应用时使用Adapter
备份joda-time-android
,并使用{{ 1}}运行单元测试时。我想你可以使用joda-time
的{{1}}方法中的Android具体实现和单元测试Application
中的Java具体实现。