Podam

Podam es una herramienta para pruebas Java, que crea automáticamente con datos inventados POJOS Java.

Podam puede llenar cualquier árbol de objetos con datos. Es compatible con los tipos genéricos, colecciones, matrices y tipos nativos Java. Esta herramienta permite crear datos aleatorios para POJOs.

Por defecto, Podam utiliza para generar datos una estrategia que produce valores aleatorios de acuerdo con el tipo del dato (Random). Esta estrategia puede ser cambiada a nivel de cada tipo de dato y cada atributo.

Para utilizar Podam, se debe crear una fábrica y luego invocar el método de construcción de objetos que recibe de argumento la clase del objeto que se va a crear:

PodamFactory factory = new PodamFactoryImpl();
Pojo myPojo = factory.manufacturePojo(Pojo.class);

Anotaciones

Para definir características específicas sobre la generación de datos se utilizan las anotaciones de Podam. Una lista completa esta en el enlace anotaciones.

En nuestros ejemplos, una anotación muy utilizada es: @PodamExclude que se aplica sobre un atributo y que evita que se genere valores para ese atributo. Es importante para evitar quedarse en un loop cuando una clase tiene un atributo del tipo de otra clase y este a su vez tiene otro del tipo de la primera. Esto es muy común en las entidades de persistencia donde se modelan relaciones bidireccionales.

Otra anotación es @PodamStrategyValue que se aplica sobre un atributo y que permite definir una estrategia de generación particular. El siguiente ejemplo ilustra eso.

Estrategias: generación de valores para Date

Para tipos más específicos como Date es necesario indicarle cómo generar los datos a través de una Estrategia.

En el caso de nuestra aplicación, las fechas en base de datos se guardan sin hora (debido al uso de @Temporal(TemporalType.DATE)), además que Derby (el motor que usamos por defecto) tiene una fecha máxima de 9999/12/12, razón por la cual se creó la estrategia co.edu.uniandes.csw.utils.podam.strategy.DateStrategy.

Para usar esta estrategia basta con anotar el atributo de tipo Date con @PodamStrategyValue(DateStrategy.class). De esta manera, Podam la usará para ese atributo específico.

results matching ""

    No results matching ""