Estoy tratando de implementar algunas pruebas de unidad para un par de clases que dependen de WifiManager y los resultados devueltos de ScanResults. Lo que me gustaría hacer es poder controlar ScanResults que estoy recibiendo para probar una variedad de condiciones diferentes.Mocking up WifiManager for Android Unit Testing
Desafortunadamente, ha sido bastante difícil para mí simular con éxito WifiManager (aunque supongo que puedo pasar sus referencias nulas de constructor en mi MockWifiManager). Este solo será mi primer problema ya que una vez que tengo un MockWifiManager con el que jugar (si esto funciona) tendré que crear mi prueba ScanResults que no tiene un constructor público (imagine que ha sido creado por alguna fábrica).
Preguntas: Al no tener un constructor público ¿puedo incluso extenderlo?
¿Estoy hablando de algo así? A menudo me hacen preguntas sobre cómo hacer una tarea específica, pero en realidad están tratando de resolver un problema diferente de la manera equivocada, ¿quizás eso es lo que estoy haciendo aquí?
Soy muy nuevo en Android, así que tener que simular toda esta funcionalidad ha estado intentando decir lo menos.
Gracias por sus entradas!
Edit: Estoy teniendo muchísimas instancias instanciando un MockWifiManager también. El constructor para el administrador de wifi espera que un IWifiManager sea un tipo que no parece existir en el SDK de Android.
Parece extraño diseñar alrededor de la necesidad de realizar pruebas. ¿Hay otros beneficios para envolver todas las API del sistema que pueda necesitar? – Brian
@Brian sí. En primer lugar, puede cambiar el Administrador de Wifi en un solo lugar. ¿Qué sucede cuando sale la versión x y hay una diferencia en la API? Tendrás que cambiar muchas áreas en tu código base. Estoy actualizando mi respuesta con más información. – Finglas
Ah sí, aísle las cosas que pueden cambiar. No tengo ningún control sobre la API de Android a menos que me proteja con esa abstracción. ¡Buena llamada! – Brian