refactoring easymock

refactoring - Alternativas a @VisibleForTesting



easymock (1)

Utiliza @VisibleForTesting cuando, como dijiste, quieres probar una parte del código que no estás exponiendo al usuario final. Si quieres probarlo, lo más probable es que sea complicado, o al menos no trivial. Dos soluciones serían:

  1. Divida el método en el que lo está utilizando en varios métodos para que se sienta más cómodo al no tener un solo método grande haciendo un montón de cosas a la vez.
  2. Vea si puede mover el comportamiento a un objeto externo que lo cuida.

Me gusta mucho el # 2 cuando las cosas empiezan a complicarse, ya que puedo tener un objeto externo que puedo probar y asegurarme de que funcione sin tener que exponerlo a través de nuestra interfaz.

Dicho esto, algunas veces los comportamientos no garantizan la extracción del método en un nuevo objeto y se usa @VisibleForTesting solo para ahorrar tiempo. La experiencia es lo que te dice cuándo vale la pena hacerlo (o no).

Entiendo que @VisibleForTesting no es deseable porque cambia la interfaz de una clase solo para propósitos de prueba. Idealmente deberíamos probar la interfaz que realmente usamos. ¿Pero cuál sería una buena alternativa?