gpt4 book ai didi

java - 在 IntelliJ 10.5 中运行测试时获取 "NoSuchMethodError: org.hamcrest.Matcher.describeMismatch"

转载 作者:IT老高 更新时间:2023-10-28 12:15:03 27 4
gpt4 key购买 nike

我正在使用 JUnit-dep 4.10 和 Hamcrest 1.3.RC2。

我创建了一个自定义匹配器,如下所示:

public static class MyMatcher extends TypeSafeMatcher<String> {
@Override
protected boolean matchesSafely(String s) {
/* implementation */
}

@Override
public void describeTo(Description description) {
/* implementation */
}

@Override
protected void describeMismatchSafely(String item, Description mismatchDescription) {

/* implementation */
}
}

当使用 Ant 从命令行运行时,它工作得非常好。但是当从 IntelliJ 运行时,它会失败:

java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:18)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:8)
at com.netflix.build.MyTest.testmyStuff(MyTest.java:40)

我的猜测是它使用了错误的 hamcrest.MatcherAssert。我如何找到它正在使用的 hamcrest.MatcherAssert(即它用于 hamcrest.MatcherAssert 的 jar 文件)? AFAICT,我的类路径中唯一的 hamcrest jar 是 1.3.RC2。

IntelliJ IDEA 是否使用它自己的 JUnit 或 Hamcrest 副本?

如何输出 IntelliJ 正在使用的运行时 CLASSPATH?

最佳答案

确保 hamcrest jar 在导入顺序上高于您的 JUnit jar。

JUnit 带有自己的 org.hamcrest.Matcher 类,可能正在被使用。

您也可以下载并使用 junit-dep-4.10.jar,它是没有 hamcrest 类的 JUnit。

mockito 也包含 hamcrest 类,因此您可能还需要移动\重新排序

关于java - 在 IntelliJ 10.5 中运行测试时获取 "NoSuchMethodError: org.hamcrest.Matcher.describeMismatch",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7869711/

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