所以我使用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文档,它肯定看起来像从集合继承了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())
EDIT:经过进一步研究,这似乎是一个PowerMock问题。
这似乎是PowerMock 1.5.5中的一个错误,已经在1.5.6中解决了
参考:https://github.com/jayway/powermock/issues/536
java.util.Arrays$ArrayList
是Arrays.asList()
返回的java.util.Arrays
的内部类,与java.util.ArrayList
不同。
如果找不到stream()
方法,可能是因为java.util.Arrays$ArrayList
是私有的?