首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle -在单元测试中使用其他版本的依赖项

Gradle -在单元测试中使用其他版本的依赖项
EN

Stack Overflow用户
提问于 2016-10-21 02:00:02
回答 2查看 465关注 0票数 1

在纯Java模块中,我依赖于compile group: 'org.threeten', name: 'threetenbp', version: threeTenVersion, classifier: 'no-tzdb'。我使用no-tzdb变体,因为这个模块将在安卓应用程序中使用,而tzdb将由安卓模块添加。

然而,在我的单元测试中,我希望能够调用一些方法,比如DateTime.now(),它需要用tzdb初始化ThreeTen。

我想知道是否有办法只在单元测试期间使用其他版本的库,以便我可以使用安装了tzdb的版本?

我已经尝试了以下几种方法:

代码语言:javascript
复制
compile group: 'org.threeten', name: 'threetenbp', version: threeTenVersion, classifier: 'no-tzdb'
    testCompile "org.threeten:threetenbp:threeTenVersion"

no-tzdb仍在使用。

谢谢你,皮埃尔

EN

回答 2

Stack Overflow用户

发布于 2017-01-09 19:00:54

不确定这是否与您的情况相关,但有一种方法可以考虑:

  1. 如果你还没有使用ThreeTenABP (ThreeTen Android Backport),它可以有效地初始化安卓上的时区信息,那么切换到使用它。
  2. 在你的单元测试中,使用原来的ThreeTen backport ( JVM Backport)。

我受到https://github.com/JakeWharton/ThreeTenABP/issues/14的启发,在测试中尝试了JVM backport,它对我很有效。

所以在build.gradle中我有:

代码语言:javascript
复制
compile 'com.jakewharton.threetenabp:threetenabp:1.0.4' 

// For unit tests involving ThreeTen, use JVM backport instead of Android one
testCompile('org.threeten:threetenbp:1.3.3') {
    exclude group: 'com.jakewharton.threetenabp', module: 'threetenabp'
}

有了这个设置,在我的单元测试中,像ZonedDateTime.now()OffsetDateTime.now()这样的方法就可以正常工作了。(ThreeTen中没有名为DateTime的类型。)

票数 1
EN

Stack Overflow用户

发布于 2017-02-02 23:42:41

如果您正在使用AndroidThreeTen,您可以模拟上下文和AssetManager,以便Mockito加载您的测试项目版本的TZDB.dat。类似于:

代码语言:javascript
复制
@Before
public void setUp() throws Exception {
    Context mockContext = mock(Context.class);
    AssetManager mockAssets = mock(AssetManager.class);
    when(mockAssets.open(anyString())).thenReturn(getClass().getClassLoader().getResourceAsStream("TZDB.dat"));
    when(mockContext.getAssets()).thenReturn(mockAssets);
    AndroidThreeTen.init(mockContext);
}

确保将您的TZDB.dat放在src/test/resources/TZDB.dat

如果您正在寻找TZDB.dat,可以在构建您的项目后在以下位置找到:project_directory/app/build/intermediates/exploded-aar/com.jakewharton.threetenabp/threetenabp/1.0.4/assets/org/threeten/bp/TZDB.dat

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40161406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档