gpt4 book ai didi

java - Hamcrest 的 lessThan 无法编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:43 26 4
gpt4 key购买 nike

正在尝试编译这段代码

import static org.hamcrest.Matchers.is;
import static org.hamcrest.number.OrderingComparison.lessThan;

...

Assert.assertThat(0, is(lessThan(1)));

发出此编译错误:

assertThat(Object,
org.hamcrest.Matcher<java.lang.Object>)
cannot be applied to (int,
org.hamcrest.Matcher<capture<? super
java.lang.Integer>>)

这可能是不同 hamcrest 版本之间的冲突吗?我正在使用 jUnit 4.6 和 hamcrest 1.3

最佳答案

我认为问题在于 JUnit 与旧版本的 Hamcrest (1.1) 捆绑在一起,因为较新版本的 Hamcrest 中的签名与 JUnit 不兼容。有两种可能的解决方案:

  1. 从类路径中删除您的 Hamcrest (1.3) 版本,并使用与 JUnit 捆绑在一起的副本。
  2. 使用不包含 Hamcrest 的不同版本的 JUnit(我相信这些 jar 的名称类似于“junit-dep-xxx.jar”)
  3. org.junit.Assert.assertThat() 的调用更改为 org.hamcrest.MatcherAssert.assertThat()`。

后者可能是我推荐的选项,因为 assertThat() 的 Hamcrest 版本会产生更好的失败消息,并且 1.1 之后的版本有一些不错的功能(例如 TypeSafeDiagnosingMatcher ).

关于java - Hamcrest 的 lessThan 无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com