tengo una duda sobre un tema de excepciones.
Tengo una colección de cocheras para guardar autos.
con 3 metodos
agregar (auto, numeroDeCochera) : Void
quitar (numeroDeCochera) : Auto
y un private getCochera(numeroDeCochera) : Cochera
Si intento quitar un auto en:
una cochera que no existe deberia lanzar excepcion
una cochera que esta vacia deberia lanzar excepcion
si intento agregar un auto en;
una cochera que no existe deberia lanzar excepcion
una cochera que esta ocupada deberia lanzar excepcion
Mi pregunta es,
1) para el caso de que la cochera no exista, esa excepcion debería lanzarla el metodo getCochera (que es común para ambos) ?
2) En ese caso, para las pruebas de agregar y quitar agrego la prueba de que va a generarse una excepcion (por mas que esos 2 metodos no sean quienes la lancen ?) (estos 2 metodos opte por que no atrapen la excepcion que genera getCochera)
por ejemplo
test01QuitarDebeLanzarExcepcionSiNoExisteCochera(){
test02AgregarDebeLanzarExcepcionSiIntentoColocarEnCocheraInexistente(){
Gracias, Saludos.
Hola José:
Las pruebas se realizan sobre los métodos públicos, de manera tal que, desde el lado de afuera, es indistinto si la excepción es lanzada por el método public void agregar(Auto auto, int numeroCochera)
o por el método private Cochera getCochera(int numeroCochera)
que es llamado por el método agregar. Que se use ese método privado es un detalle de implementación que no le importan a las pruebas, por lo que deben existir pruebas del lanzamiento de la excepción para ambos métodos públicos.
Saludos,
Tomás