默认情况下,Hamcrest 所需的版本用于:
- JUnit 4.11
- Hamcrest 1.3
- Mockito-core 1.9.5
- Hamcrest 1.1
Hamcrest 1.1 和 1.3 之间的 API 没有变化。目前我的测试用例尝试使用 Hamcrest 1.1 运行 JUnit 4.11,但我合理 sure that this is a bad idea.出于类似的原因,我怀疑尝试将 Mockito-core 1.9.5 与 Hamcrest 1.3 一起使用是 also a bad idea.
怎么办?
- 将 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 的更新而变得过时。 See this answer.
我在工作中的许多 Maven 项目中使用具有 Mockito 核心依赖项和 hamcrest 1.3 的最新 JUnit。到目前为止,没有人报告这有任何问题。因此,如果这适用于您的测试,请使用所有三个的最新版本。只需确保使用 mockito 核心而不是全部。
所以我建议使用选项 2 以获得新版本的所有好处。如果您真的怀疑任何事情都可能出错,请使用最安全的选项 4。但当然你可以选择选项 2,当在不久的将来出现任何问题时,你可以切换到选项 2。或者从那时起,一个更新的 mockito 已经可以解决这个问题。
来自 mockito Issue 397 的注释: mockito-core 不会出现这个问题。
关于java - Mockito、JUnit、Hamcrest、版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770943/