2012-10-11 35 views
8

Me pregunto acerca de una buena manera de tratar con un método protegido en Junit.Método protegido Junit

Suponiendo que quiero probar una clase llamada A que tiene un miembro y un constructor protegidos. Entendí que para probar la clase A debería escribir otra clase llamada ATest que podría extender TestCase (esto debería ser obligatorio en Junit3). Como quiero probar un método protegido y porque A tiene un constructor protegido, mi clase de prueba ATest también debe extender la clase A donde ese método se implementa para poder crear esa clase y acceder al método.

podría ser una herencia doble de ambas clases una buena solución?

P.S Ya he sabido que en Junit 4 se podría evitar la herencia de TestCase.

+0

¿Puede explicar por qué lo haría, desea extender TestCase? Creo que deberías poder hacer lo que estás diciendo y extender A para publicitar sus métodos protegidos. Lo he comido con NUnit y funciona muy bien – cowboydan

+0

posible duplicado de [junit & java: prueba de métodos no públicos] (http://stackoverflow.com/questions/440786/junit-java-testing-non-public- métodos) –

Respuesta

17

Para obtener acceso a los miembros protegidos de A, puede simplemente poner A y ATest en el mismo paquete.

+1

+1 - esta es una convención común para probar métodos privados y protegidos (por defecto). –

1

Java no permite la herencia múltiple de la implementación. Puede implementar múltiples interfaces.

Preferiría utilizar la reflexión para obtener los métodos de prueba que no deseo que los clientes sepan. Funciona para métodos privados, también.

Cuestiones relacionadas