Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

448
Vistas
¿Genéricos de Java de Kotlin al verificar usando Mockito?

Estoy usando Kotlin 1.6.10, Mockito 4.0.0 y Java 8 y tengo una interfaz Java definida así:

 public interface MyInterface { <D, T extends MyObject<T, D>> T doThings(T myObject); }

Se usa una implementación de esta interfaz en una aplicación Kotlin y tenemos una prueba unitaria en la que queremos asegurarnos de que el método doThings nunca se llame usando Mockito. En Java, simplemente haría esto:

 verify(myInterfaceInstance, never()).doThings(any());

Pero si hago esto en Kotlin obtengo un error de tiempo de compilación:

 verify(myInterfaceInstance, never()).doThings(any())

No hay suficiente información para inferir la variable de tipo D

Entiendo por qué este es el caso, pero no puedo hacer que funcione. En este caso particular, realmente no me importan los tipos genéricos, solo quiero asegurarme de que doThings nunca se llame. He probado muchas cosas diferentes, por ejemplo:

 verify(myInterfaceInstance, never()).doThings<Any, MyObject<*, Any>>(any())

que falla con:

 Type argument is not within its bounds. Expected: MyObject<MyObject<*, Any>!, TypeVariable(D)!>! Found: MyObject<*, Any!>!

y también he probado:

 verify(myInterfaceInstance, never()).doThings<Any, MyObject<*, *>>(any())

y varias otras permutaciones que parecen fallar con aproximadamente el mismo mensaje de error.

Entonces mi pregunta es, ¿cómo puedo hacer el equivalente de verify(myInterfaceInstance, never()).doThings(any()); en kotlin?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Esta no es una respuesta de Mockito, pero ¿te ayudaría Library Mockk? MockK está diseñado específicamente para Kotlin, por lo que podría tener mejores soportes para el manejo de genéricos.

La verificación se vería así:

 verify(exactly = 0) { yourClass.doThings(any()) };

https://notwoods.github.io/mockk-guidebook/docs/mocking/verify/

https://mockk.io/#verification-atleast-atmost-or-exactly-times

over 4 years ago · Santiago Trujillo Denunciar

0

Esto compila bien, pero emite un par de advertencias, puede suprimirlas mediante una anotación respetuosa:

 @Suppress("TYPE_MISMATCH_WARNING", "UPPER_BOUND_VIOLATED_WARNING") verify(myInterfaceInstance, never()).doThings<Any, MyObject<*, *>?>(any<MyObject<*, *>>())
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda