Estoy escribiendo una tarea personalizada que amplía la Tarea. Estoy usando el método log() en la tarea. Lo que quiero hacer es usar una prueba unitaria mientras desarrollo la tarea, pero no sé cómo configurar un contexto para que la tarea se ejecute para inicializar la tarea como si se estuviera ejecutando en la hormiga.¿Cómo pruebo la unidad de una tarea personalizada?
Esta es la costumbre de tareas:
public class CopyAndSetPropertiesForFiles extends Task {
public void execute() throws BuildException {
log("CopyAndSetPropertiesForFiles begin execute()");
log("CopyAndSetPropertiesForFiles end execute()");
}
}
Este es el código de prueba de unidad:
CopyAndSetPropertiesForFiles task = new CopyAndSetPropertiesForFiles();
task.execute();
Cuando el código se ejecuta como una prueba que da una NullPointerException cuando se llama registro.
java.lang.NullPointerException
at org.apache.tools.ant.Task.log(Task.java:346)
at org.apache.tools.ant.Task.log(Task.java:334)
at uk.co.tbp.ant.custom.CopyAndSetPropertiesForFiles.execute(CopyAndSetPropertiesForFiles.java:40)
at uk.co.tbp.ant.custom.test.TestCopyAndSetPropertiesForFiles.testCopyAndSetPropertiesForFiles(TestCopyAndSetPropertiesForFiles.java:22)
¿Alguien sabe una manera de proporcionar un contexto o talones o algo similar a la tarea?
Gracias,
Rob.
Respuesta aceptada de Abarax. Pude llamar a task.setProject (new Project()); El código ahora se ejecuta OK (excepto que no aparece el registro en la consola - al menos puedo ejercitar el código :-)).
¡Definitivamente haz esto! TDD es una metodología de diseño, cuando Ant proporciona el diseño, no puede hacer mucho, especialmente si hereda de una superclase proporcionada por el marco que no está bajo su control. Desea probar * solo * la funcionalidad que proporciona, * no * Implementación de tareas por parte de las hormigas. Votando! –