单元测试和 joda-time-android

Unit-tests and joda-time-android

我在 Presenter class 中使用了 joda-time-android 库的 classes 并且它不能有任何 Android 依赖项。所以我无法正确测试它。我知道我可以为此使用 Robolectric,但我想远离此工具并清理我的 Presenter。我应该放弃 JodaTime 吗?还有其他解决方案吗?

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

由于设置 Robolectric 有点麻烦,还有另一种选择 - 您可以使用 Adapter pattern 为常规 Java Joda 时间库和Android 版本。

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

对于 Unit-tests 我们可以使用 JodaTime 库的默认 java 实现,因为它具有与 joda-time-android.[=15 相同的包和 类 =]

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

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

很有魅力。

对于其他库的其他情况,请参阅 的回答。