error: method addOutcome in class OutcomesTable cannot be applied to given types
error: method addOutcome in class OutcomesTable cannot be applied to given types
当我尝试使用 jbehave 结果对匹配器进行 hamcrest 匹配时 table 我在 maven 构建时出现以下编译时错误。
"error: method addOutcome in class OutcomesTable cannot be applied to given types"
请参考下面的示例代码。
public static <T> void method(T expected, T actual) {
OutcomesTable outcomes = new OutcomesTable();
List expectedList = (ArrayList)expected;
List actualList = (ArrayList)actual;
for(Object ExpObj : expectedList){
outcomes.addOutcome("a success", actualList, containsInAnyOrder(ExpObj));
}
outcomes.verify();
}
请指出我做错了什么。
JBehave 的通用函数 public <T> void addOutcome(String description, T value, Matcher<T> matcher);
期望您在使用 T
的两个参数中为 T
提供相同的类型。例如如果您在第二个参数中传递 String value
,则需要在第三个参数中提供 Matcher<String>
。
在你的例子中,你传递了一个 List
作为第二个参数,但是传递了用单个 Object
调用的 containsInAnyOrder(T... items)
函数的结果,这不会产生所需的实例Matcher<List>
类型。
我不太确定,你想做什么,但我认为你需要的是:
outcomes.addOutcome("a success", actualList, Matchers.contains(ExpObj));
Matcher containsInAnyOrder(T... items)
仅对一个值没有意义,因为数组中的一个元素只存在一种排列(顺序)。 :)
您也可以像这样编译代码:
outcomes.addOutcome("a success", actualList, Matchers.containsInAnyOrder(Arrays.asList(ExpObj)));
,但我认为这不是您所需要的。
希望我说的很清楚,并且可以提供帮助。
当我尝试使用 jbehave 结果对匹配器进行 hamcrest 匹配时 table 我在 maven 构建时出现以下编译时错误。
"error: method addOutcome in class OutcomesTable cannot be applied to given types"
请参考下面的示例代码。
public static <T> void method(T expected, T actual) {
OutcomesTable outcomes = new OutcomesTable();
List expectedList = (ArrayList)expected;
List actualList = (ArrayList)actual;
for(Object ExpObj : expectedList){
outcomes.addOutcome("a success", actualList, containsInAnyOrder(ExpObj));
}
outcomes.verify();
}
请指出我做错了什么。
JBehave 的通用函数 public <T> void addOutcome(String description, T value, Matcher<T> matcher);
期望您在使用 T
的两个参数中为 T
提供相同的类型。例如如果您在第二个参数中传递 String value
,则需要在第三个参数中提供 Matcher<String>
。
在你的例子中,你传递了一个 List
作为第二个参数,但是传递了用单个 Object
调用的 containsInAnyOrder(T... items)
函数的结果,这不会产生所需的实例Matcher<List>
类型。
我不太确定,你想做什么,但我认为你需要的是:
outcomes.addOutcome("a success", actualList, Matchers.contains(ExpObj));
Matcher containsInAnyOrder(T... items)
仅对一个值没有意义,因为数组中的一个元素只存在一种排列(顺序)。 :)
您也可以像这样编译代码:
outcomes.addOutcome("a success", actualList, Matchers.containsInAnyOrder(Arrays.asList(ExpObj)));
,但我认为这不是您所需要的。
希望我说的很清楚,并且可以提供帮助。