Mockito:使用通用参数进行validation

用Mockito我可以做到以下几点:

verify(someService).process(any(Person.class)); 

但是如果process需要一个Collection<Person>我怎么写呢? 无法弄清楚如何正确写入。 只是得到语法错误…

尝试:

 verify(someService).process(Matchers.<Collection<Person>>any()); 

实际上,当我inputany()时,IntelliJ会自动提示此修复…不幸的是,在这种情况下,您不能使用静态导入。

试试:

 verify(someService).process(anyCollectionOf(Person.class)); 

从Mockito 1.8版本开始

 public static <T> Collection<T> anyCollectionOf(Class<T> clazz); 

如果你使用自己的方法,你甚至可以使用静态导入:

 private Collection<Person> anyPersonCollection() { return any(); } 

那么你可以使用

 verify(someService).process(anyPersonCollection()); 

由于types擦除你不能expression这个。 即使你可以用代码来expression它,Mockito也没有机会在运行时检查它。 你可以创build一个类似的界面

 interface PersonCollection extends Collection<Person> { /* nothing */ } 

而是在整个代码中使用它。

编辑:我错了,Mockito有anyCollectionOf(..)这是你想要的。