Mockito,JUnit,Hamcrest,Versioning
默认情况下,Hamcrest所需的版本为:
- JUnit 4.11
- Hamcrest 1.3
- Mockito核心1.9.5
- Hamcrest 1.1
Hamcrest 1.1和1.3之间没有重要的API变化。 目前我的测试用例试图用Hamcrest 1.1运行JUnit 4.11,但我有理由相信这是一个坏主意。 出于类似的原因,我怀疑尝试将Mockito-core 1.9.5与Hamcrest 1.3一起使用也是一个坏主意。
该怎么办?
- 将Hamcrest 1.1与最新的JUnit和Mockito一起使用
- 将Hamcrest 1.3与最新的JUnit和Mockito一起使用
- 尝试修补Mockito-core 1.9.5以使用Hamcrest 1.3
- 我此刻没有的时间
- 使用JUnit 4.10
- 其他?
更新2015-06-12: Mockito 1.10.19和2.0.13-beta仍然使用Hamcrest 1.1
由@ durron597于2015年7月29日更新:这个出色的答案在2013年是正确的,但是由于Mockito的更新已经过时了。 看到这个答案。
我在许多Maven项目中使用最新的JUnit和Mockito核心依赖项以及hamcrest 1.3。 直到现在没有人报告这有任何问题。 因此,如果这适用于您的测试,请使用最新版本的所有三个版本。 只需确保使用mockito核心而不是全部。
所以我建议选择2来获得新版本的所有好处。 如果您真的怀疑任何事情都可能出错,请使用最安全的选项4。 但是当然你可以使用选项2,并且在不久的将来,任何事情都会出错,你可以切换到选项2.或者从那时起,一个较新的模拟已经在那里解决了这个问题。
来自mockito的注释问题397 :mockito-core没有出现此问题。
更新:截至2015年6月30日,Mockito的最新版本在内部使用Hamcrest 1.3。
- Github提交
- Maven中央链接
因此,对于能够升级到Mockito 2.0的人来说,这个问题已经过时了。
我不会改变接受的答案,因为mszalbach应该保留15个代表,但这应该是新的规范答案
这是mszalbach建议的Maven解决方案:
org.hamcrest hamcrest-all 1.3 junit junit 4.11 hamcrest-core org.hamcrest org.mockito mockito-core 1.9.5 org.hamcrest hamcrest-core org.hamcrest hamcrest-all test junit junit test org.mockito mockito-core test
看看这里的Mockito文档,我认为选项2是推荐的方式(使用mockito-core工件)。