java - Mockito、JUnit、Hamcrest、版本控制

标签 java junit dependencies mockito hamcrest

默认情况下,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.

怎么办?

  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

最佳答案

@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/

相关文章:

java - 如何使用 CsvReader 中的 getHeaders() 方法读取 csv 文件的 header 值

java - Maven:有没有简单的方法来生成 pom.xml 文件?

java - 每次测试后重新加载 Spring 应用程序上下文

maven-2 - 梅文。传递依赖

java - 文字谜题 - 如何解决它超出路径的问题?

java - Mockito/Realm (何时-那么): how to pass arguments from method to its submethod

java - Spring Boot 单元测试

android - Kotlin Android无法引用InstantTaskExecutorRule

javascript - npm install 找不到新版本

PHP Order数组基于元素依赖