单元测试和 joda-time-android
Unit-tests and joda-time-android
我在 Presenter
class 中使用了 joda-time-android
库的 classes 并且它不能有任何 Android 依赖项。所以我无法正确测试它。我知道我可以为此使用 Robolectric
,但我想远离此工具并清理我的 Presenter
。我应该放弃 JodaTime 吗?还有其他解决方案吗?
好吧,joda-time-android
确实依赖于 Android 运行时才能工作。为此使用 Robolectric
似乎是一个不错的用例,因为您不会与 Fragment
、Activity
和来自 [=] 的其他 UI 类 进行交互28=]SDK.
由于设置 Robolectric
有点麻烦,还有另一种选择 - 您可以使用 Adapter pattern 为常规 Java Joda 时间库和Android 版本。
如果这可行且实用(取决于你想使用多少 Joda 时间 API),你可以在 [=37= 时用 joda-time-android
支持你的 Adapter
] 应用程序,并在 运行 单元测试时用 joda-time
支持它。我想您可以使用 Application
的 onCreate()
方法中的 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'
很有魅力。
对于其他库的其他情况,请参阅 的回答。
我在 Presenter
class 中使用了 joda-time-android
库的 classes 并且它不能有任何 Android 依赖项。所以我无法正确测试它。我知道我可以为此使用 Robolectric
,但我想远离此工具并清理我的 Presenter
。我应该放弃 JodaTime 吗?还有其他解决方案吗?
好吧,joda-time-android
确实依赖于 Android 运行时才能工作。为此使用 Robolectric
似乎是一个不错的用例,因为您不会与 Fragment
、Activity
和来自 [=] 的其他 UI 类 进行交互28=]SDK.
由于设置 Robolectric
有点麻烦,还有另一种选择 - 您可以使用 Adapter pattern 为常规 Java Joda 时间库和Android 版本。
如果这可行且实用(取决于你想使用多少 Joda 时间 API),你可以在 [=37= 时用 joda-time-android
支持你的 Adapter
] 应用程序,并在 运行 单元测试时用 joda-time
支持它。我想您可以使用 Application
的 onCreate()
方法中的 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'
很有魅力。
对于其他库的其他情况,请参阅