2011-08-25 29 views
5

Estoy intentando capturar un argumento usando Mockito. Este argumento es del tipo List<MyClass>. Pero no puedo encontrar la sintaxis adecuada para especificarlo.Especifique la clase de una interfaz genérica para simular

me puedo hacer esto:

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

Pero no consigo este para compilar:

ArgumentCaptor< List<MyClass> > captor = 
    ArgumentCaptor.forClass(List<MyClass>.class); 

¿Hay alguna manera?

+0

posible duplicado de [Cómo capturar una lista de tipo específico con Mockito] (http://stackoverflow.com/questions/5606541/how-to-capture-a-list-of- specific-type-with-mockito) – xtofl

Respuesta

4

Lamentablemente no, .class solo devolverá el objeto Class<List>, donde List es un tipo sin formato. La implementación no es perfecta, y la información de tipo anidado no puede obtenerse usando .class. Algo como List<Foo>.class es una sintaxis no válida porque no existe ese objeto Class<List<Foo>> en ninguna parte.

+0

¿Qué quiere decir con 'la implementación no es perfecta'? – xtofl

+0

Me refería a la implementación del lenguaje de los genéricos. –

+0

:) No puedo más que estar de acuerdo con eso (creo que ha sido mimado por C++) – xtofl

3

Creo que esto se debe a que Java no determina el tipo de una clase parametrizada estáticamente.

La misma forma en que esto no se compila:

Class<?> c1 = ArrayList<String>.class; 

Y esto ni como en la parte superior de la emisión Tipo de resolución List es una interfaz:

Class<?> c2 = List<String>.class; 

Pero esto compilar, y se puede probablemente haga algo similar:

public class MyList implements List<String> { 
    ... the List's methods to implement ... 
} 

// and later in the code: 

Class<?> c3 = MyList.class; 
14

Debería funcionar usando @Captor la anotación:

@Captor 
    private ArgumentCaptor<ArrayList<SomeType>> captor; 
+1

Gracias que funciona para mí. Tenga en cuenta que un 'MockitoAnnotations.initMocks (this);' es necesario. (ver también http://docs.mockito.googlecode.com/hg/1.9.5/org/mockito/Captor.html) –

Cuestiones relacionadas