8

joda-time-android在课堂上使用了库的类Presenter,它不能有任何 Android 依赖项。所以我无法正确测试它。我知道我可以用Robolectric这个,但我想远离这个工具和我的Presenter清洁。我应该放弃 JodaTime 吗?还有其他解决方案吗?

4

2 回答 2

16

因为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的答案。

于 2016-05-12T16:33:23.557 回答
2

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

由于设置Robolectric有点痛苦,因此还有另一种选择 - 您可以使用适配器模式为常规 Java Joda 时间库和 Android 版本创建一个通用接口。

如果这是可能且实用的(取决于您要使用多少 Joda 时间 API),您可以在运行应用程序时支持您,并在运行单元测试时支持Adapter它。例如,我想你可以让它使用你的方法中的Android具体实现和你的单元测试中的Java具体实现。joda-time-androidjoda-timeApplicationonCreate()@Before

于 2016-05-12T15:23:40.793 回答