8

我正在使用 mockito 编写一些测试,并且我正在使用以下代码:

ArgumentCaptor<LinkedList> captor = ArgumentCaptor.forClass(LinkedList.class); 

这编译并运行得很好,除了“captor”是原始类型的警告,我应该用类似的东西替换它:

ArgumentCaptor<LinkedList<String>> captor = ArgumentCaptor.forClass(LinkedList<String>.class);

问题是 LinkedList<String>.class不存在,因此赋值的右侧永远不会编译。

假设抑制警告是不优雅的,有没有优雅的解决方案?如果不是,为什么编译器会警告我一些我无法真正修复的东西?

4

1 回答 1

7

Mockito 中有一个@Captor注释,旨在让您避免此类警告。

使用它,您无需手动new启动ArgumentCaptor. 您可以使用注释声明它,然后调用MockitoAnnotations.initMocks(this);“自动”创建您的捕获者。

而不是这个:

ArgumentCaptor<LinkedList> captor = ArgumentCaptor.forClass(LinkedList.class); 

做这个:

@Captor
ArgumentCaptor<LinkedList<String>> captor;

@Before
public void init() {
   // initialize fields annotated with Mockito annotations
   MockitoAnnotations.initMocks(this);  
}
于 2014-12-21T05:32:37.403 回答