class java.util.Arrays$ArrayList 的层次结构中没有匹配名称流的方法

No methods matching the name(s) stream in hierarchy of class java.util.Arrays$ArrayList

所以我正在使用 java 8 并尝试使用 PowerMock 和 Mockito 编写一些测试。我收到 MethodNotFoundException 消息:

No methods matching the name(s) stream were found in the class hierarchy of class java.util.Arrays$ArrayList.

我仔细检查了 ArrayList documentation ,它看起来确实继承了 Collections 的 stream。这是 PowerMockito 的问题还是我遗漏了什么?

有问题的行

PowerMockito.when(thing.call("services", "things")).thenReturn(Arrays.asList("testService")); // Doesn't matter if it's new ArrayList<String>()));

然后有类似的东西叫它

services.stream().filter( x -> //filter).collect(Collectors.toList())

编辑: 经过进一步研究,这似乎是一个 PowerMock 问题。想要一个解决方案。

java.util.Arrays$ArrayList 是由 Arrays.asList() 返回的 java.util.Arrays 的内部 class,与 java.util.ArrayList.

不同

如果找不到stream()方法,可能是因为java.util.Arrays$ArrayList是私有的?

这似乎是 PowerMock 1.5.5 中的错误,已在 1.5.6 中解决

参考:https://github.com/jayway/powermock/issues/536