cómo escribir pruebas unitarias a clases internas ???probando una clase interna
Respuesta
Escriba pruebas que especifiquen el comportamiento de la interfaz externa de la clase de nivel superior. Si esa clase usa clases internas para implementar ese comportamiento o no, es un detalle de implementación de la clase, y las pruebas no necesitan saber nada al respecto.
Si la clase interna no puede ser probada adecuadamente a través de la interfaz de la clase de nivel superior, entonces generalmente es mejor mover la clase interna y probarla directamente como una nueva clase de nivel superior. Querer probar las clases internas es un olor a código que la clase interna podría ser lo suficientemente significativa como para ser una clase de nivel superior.
Al usar MS Visual Studio para pruebas unitarias, simplemente debe crear un private Accessor. Internamente, funciona con reflexiones, creo. Solo eche un vistazo al código generado.
No lo prueba directamente. Será probado a través de la clase donde está definido.
Y, si aplica TDD, como actualmente lo implican estas etiquetas de pregunta, ¿cuál es la prueba que acaba de escribir esa llamada para una clase interna? Quiero decir, ¿no puede ser una clase estándar, de propiedad privada de la clase en la que estás trabajando?
Hemos utilizado una clase auxiliar que utiliza la reflexión para cargar y llamar a métodos en clases internas. También es posible cambiar la accesibilidad en tiempo de compilación usando el símbolo de depuración por ejemplo
#if DEBUG
public
#else
internal
#endif
class MyInternalClass
{
...
}
Sin embargo la respuesta de Esko Luontola es más correcto, ya que es los requisitos de funcionalidad o de negocios que son más importantes. Es fácil centrarse demasiado en la cobertura del código en lugar de probar las áreas de riesgo importantes.
No es que lo recomiende, pero también puede usar el InternalsVisibleToAttribute.
Ver las explicaciones detalladas de http://msdn.microsoft.com/en-us/library/bb385974.aspx
La página vinculada ya no está disponible – Catch22
- 1. Instantiating una clase interna
- 2. ¿Propósito de una clase interna?
- 3. Unidad probando una clase que hereda de una clase abstracta
- 4. Unidad probando una clase de aplicación Flask
- 5. clase Anotar con clase interna
- 6. Anotar clase interna anónima
- 7. BroadcastReceiver como clase interna
- 8. Una clase interna retorcida en Java
- 9. Creando una instancia de la clase interna
- 10. ¿Cómo reenvío declarar una clase interna?
- 11. Cómo hacer una clase interna Parcelable
- 12. Inicializador estático en una clase interna?
- 13. Método principal en una clase interna estática.
- 14. android- calling Intención de una clase interna
- 15. clase interna en AS
- 16. Referencia de clase para una clase interna Java
- 17. Clase interna privada sintetiza clase anónima inesperada
- 18. Serialización de clase interna estática
- 19. Clase estática interna en Java
- 20. Pregunta sobre C++ clase interna
- 21. ¿Puede una clase interna de una clase de plantilla ser una clase sin plantilla?
- 22. Java clase interna rompecabezas visibilidad
- 23. La subclasificación clase interna de la clase externa versus otra clase interna
- 24. Probando la existencia de un campo en una clase
- 25. Java: estático vs clase interna
- 26. clase interna que se extiende
- 27. AspectJ Clase interna Unir puntos
- 28. ¿Cómo ocultar una clase con una palabra clave interna?
- 29. ¿Cómo sobrescribir/extender una clase interna desde una subclase?
- 30. volver más de una instancia de una clase interna anónima
usted dice que no recomendaría este, pero la forma en que habría que resolver algo como esto? http://stackoverflow.com/questions/15440935/how-to-test-internal-class-library –
@Thomas: exactamente como dice Esko en su respuesta. O prueba las API internas indirectamente a través de su interfaz pública, o promociona sus API internas a público y las prueba directamente. –