convención de nomenclatura para paquetes de prueba

7

En realidad estamos nombrando nuestros paquetes de prueba al igual que sus contrapartes de prueba. Así que terminamos con esta estructura:

src/main/java
    com.hello.world
        helloWorld.java
src/test/java
    com.hello.world
        helloWorldTest.java

Siempre sentí que esto no es muy inteligente ya que no se puede distinguir entre "prueba" y "prueba" si solo se proporciona con el nombre del paquete. Por otro lado, realmente no he encontrado un caso donde esto importe de alguna manera. ¿Es una buena práctica tener las mismas convenciones de nomenclatura para ambos paquetes (para los casos de prueba y las clases de origen)? Si no, ¿cuál sería un mejor enfoque?

    
pregunta OddDev 19.08.2016 - 11:15

1 respuesta

6

Esa es una buena convención.

A veces también desea escribir pruebas unitarias para clases y métodos de paquetes privados. No podrá llamarlos desde una clase de prueba de unidad ubicada en otro paquete.

No debería haber ninguna confusión acerca de tener clases de prueba de unidad en el mismo espacio de nombres, ya que no deberían estar en la ruta de clase cuando se compila o ejecuta el código de producción.

Este es un ejemplo de un pequeño módulo con una interfaz pública, una clase de fábrica pública y dos clases de implementación de paquetes privados:

src/main/java:
    com.hello.transmogrifier
        public interface Transmogrifier
        public class TransmogrifierFactory
        class MapTransmogrifier implements Transmogrifier
        class ListTransmogrifier implements Transmogrifier

scr/test/java:
    com.hello.transmogrifier
        public class TransmogrifierFactoryTest
        public class MapTransmogrifierTest
        public class ListTransmogrifierTest

Ocultar las implementaciones de la interfaz de Transmogrifier podría ser una opción de diseño válida. Quizás es responsabilidad de la clase de fábrica elegir la implementación.

Dado que las implementaciones son de paquete privado, debe colocar las clases de prueba de unidad en el mismo paquete si desea probarlas directamente. Si tiene sus clases de prueba de unidad en algún otro paquete, solo tiene acceso directo a la interfaz pública y la clase de fábrica desde sus pruebas.

    
respondido por el COME FROM 19.08.2016 - 14:42

Lea otras preguntas en las etiquetas