Mockito, JUnit, Hamcrest, Versioning更新:截至2015年6月30日,最新版本的Mockito在内部使用Hamcrest 1.3。

2022-09-02 04:05:23

默认情况下,所需的 Hamcrest 版本用于:

  • JUnit 4.11
    • 汉克雷斯特 1.3
  • Mockito-core 1.9.5
    • 汉克雷斯特 1.1

Hamcrest 1.1和1.3之间没有iginifcant API变化。目前,我的测试用例尝试使用Hamcrest 1.1运行JUnit 4.11,但我有理由相信这是一个坏主意。出于类似的原因,我怀疑尝试将Mockito-core 1.9.5与Hamcrest 1.3一起使用也是一个坏主意。

怎么办?

  1. 将Hamcrest 1.1与最新的JUnit和Mockito一起使用
  2. 将Hamcrest 1.3与最新的JUnit和Mockito一起使用
  3. 尝试修补 Mockito-core 1.9.5 以使用 Hamcrest 1.3
    • 我目前没有时间
  4. 使用 JUnit 4.10
  5. 其他?

2015-06-12更新:Mockito 1.10.19 和 2.0.13-beta 仍然使用 Hamcrest 1.1


答案 1

@durron597于2015年7月29日更新:这个出色的答案在2013年是正确的,但是由于Mockito的更新,它已经过时了。看到这个答案。

我在许多Maven项目中使用最新的JUnit和Mockito核心依赖性和hamcrest 1.3。到目前为止,没有人报告任何问题。因此,如果这适用于您的测试,请使用所有三个测试的最新版本。只需确保使用mockito核心而不是全部。

因此,我建议使用选项2,以获得较新版本的所有好处。如果您真的怀疑任何事情都可能出错,请使用选项4,这是最安全的。但是,当然,你可以选择选项2,在不久的将来,当任何事情出错时,你可以切换到选项2。或者从那时起,一个新的嘲笑已经在那里解决这个问题。

来自 mockito Issue 397 的注释:mockito-core 不会出现此问题。


答案 2

更新:截至2015年6月30日,最新版本的Mockito在内部使用Hamcrest 1.3。

因此,对于那些能够升级到Mockito 2.0的人来说,这个问题已经过时了。

我不打算改变接受的答案,因为mszalbach应该保留15 rep,但这应该是新的规范答案


推荐