gpt4 book ai didi

java - Hamcrest assertThat 在移动项目时不起作用

转载 作者:行者123 更新时间:2023-11-30 11:16:17 25 4
gpt4 key购买 nike

我使用 hamcrest 匹配器制作了一个测试套件,一切正常,直到我将项目移到另一台机器上。

我得到的错误是:

The method assertThat(T, Matcher<? super T>) in the type MatcherAssert is not applicable  
for the arguments (Object, Matcher<Double>)

我为什么会收到它以及如何修复有什么想法吗?

此外,并非所有 assertThat 遇到的错误都出现,有些被认为是正确的,即使它们有 double 匹配器......

最佳答案

首先,您应该说明您遇到的错误是在编译时发生的,而不是在运行时发生的。问题是 Double 不是 Objectsuper。所以你调用 assertThat(someObject, someDoubleMatcher) 在编译时不满足要求的签名。然而,这在运行时会很好地工作,因为 Matcher 将检查类型。

可以选择...

// cast expected to object so that created matcher is Matcher<Object>
assertThat(myObject, CoreMatchers.equalTo((Object)myDouble));

// cast actual value to double so that both value and matcher are Double
assertThat((Double)myObject, equalTo(myDouble));

// cast Matcher to raw type so generics will be ignored
assertThat(myObject, (Matcher) equalTo(myDouble));

关于java - Hamcrest assertThat 在移动项目时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24955999/

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