Lo voy a llamar 'prouno'. En la ventana 'package' menú contextual/new java project/next/finish.
El proyecto tiene que tener tres carpetas tipo Source Folder, una llamada src, otra llamada test y una tercera llamada Lib, ésta de tipo Folder, donde vamos a incluir las librerias, en este caso metemos la libreria testng: la copiamos de otro proyecto y después, menú contextual en la librería/build path/add to build path. Va a parecer que no está en la carpeta lib, pero si lo miramos desde la ventana Navigator veremos que sí.
Ahora vamos a relacionar el proyecto con nuestro repositorio: menú contextual en nuestro proyecto/Team/share project/SVN/next/seleccionamos nuestro repositorio/next/next/finish. Esperamos un rato a que importe los datos. Se abre una ventana que nos pide que seleccionemos lo que queremos importar. Seleccionamos todo menos los .classpath y los .project, y damos a OK... y esperamos un poco. Ya tenemos nuestro proyecto en nuestro repositorio.
Tener en cuenta que las carpetas src y test deben tener una estructura de directorios idéntica a medida que trabajemos con ellas.
En la carpeta src vamos a crear un nuevo package: menú contextual/new/package. Lo llamo eticom. Finish.
Aquí creo una serie de cosas:
- una clase cualquiera: menú contextual sobre src/eticom, new/class. La voy a llamar 'Coche'. y como atributos: color, marca, puertas.
//Atributos:
String color;
String marca;
String puertas;
}
- una clase de tipo enum: creo antes, en src el 'package' eticom.enums. Aquí creo la clase: menú contextual sobre este paquete/new/enum. La llamo 'Nombres', que van a ser los nombres de los posibles nombres de los programadores.
public enum Nombres {
Alberto, Rafa, Antonio
}
- una anotacion cualquiera con al menos un atributo de tipo primitivo y otro del tipo enum anteriormente creado: al igual que con el paquete enums, creamos un nuevo paquete en src, que la vamos a llamar eticom.anotaciones, y ahí creamos la anotación: menú contextual/new/annotation. La voy a llamar 'Programador', en la que como atributo voy a tener la variable 'nombreProgramador()'. Hay que tener muy en cuenta las importaciones de paquetes.
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import eticom.enums.Nombres;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Programador {
//Atributo primitivo:
String cargo();
//Atributo de tipo enum:
Nombres nombreProgramador();
}
- aplicamos la anotación a la clase que hemos creado, eligiendo los valores correspondientes; la clase quedaría de tal forma:
import eticom.anotaciones.Programador;
import eticom.enums.*;
@Programador(cargo = "jefe de proyecto", nombreProgramador = Nombres.Rafa)
public class Coche {
/*
* Estos son los atributos de la clase
*/
String color;
String marca;
int puertas;
/*
* Método constructor por defecto
*/
public Coche(){
}
/*
* Método constructor
*/
public Coche(String col){
this.color=col;
}
/*
* (non-Javadoc)
* @see java.lang.Object#equals(java.lang.Object)
*/
public boolean equals(Object o){
boolean bol = false;
Coche car = (Coche)o;
if(car.color.equals(this.color)){
bol = true;
}
return bol;
}
}
En la carperta test hay que crear lo siguiente: Una clase de prueba llamada igual que la clase pero con el sufijo Test en la que creamos:
- un método de prueba utilizando el framework de pruebas TestNG. En dicho método comprobaremos que los valores de la anotación coinciden con los que esperamos
- otro método de prueba que compruebe que el método equals de mi clase "Mesa" funciona correctamente. Para ello, en dicho método necesitaremos al menos 3 instancias/objetos de dicha clase para la demostración
import org.testng.annotations.Test;
import eticom.anotaciones.Programador;
import eticom.enums.Nombres;
public class CocheTest {
@Test
public void pruebaProgramador() {
assert(Coche.class.isAnnotationPresent(Programador.class)) : " la anotacion Programador aparece en la clase Coche";
Programador miAnotacion = Coche.class.getAnnotation(Programador.class);
assert(miAnotacion.nombreProgramador().equals(Nombres.Rafa)) : " El valor del nombre no es Alberto ni Antonio";
assert(!miAnotacion.cargo().equals("programador")) : " el cargo es de jefe de proyecto";
}
public void pruebaCoche(){
Coche coche1 = new Coche();
coche1.color = "rojo";
Coche coche2 = new Coche();
coche2.color = "rojo";
Coche coche3 = new Coche();
coche3.color = "negro";
assert(coche1.equals(coche2)): " el " + coche1 + " y el " + coche2 + " deben ser iguales";
assert(!coche2.equals(coche3)): " el " + coche2 + " y el " + coche3 + " deben ser distintos";
}
}
Ahora, al lanzar la clase CocheTest (menú contextual sobre esta clase/Run as/TestNG Test), la prueba tiene que salir en verde, lo que significa que está bien hecho.
NOTA IMPORTANTE: Para estar seguros que está bien, primero hacemos la prueba de CocheTest pero anulando el método public boolean equals(Object o){ } de la clase Coche, para así estar seguros de que hemos hecho bien el casting al objeto y pasado a Coche.
Ahora genero el javadoc (nos genera toda la documentación de nuestro programa), para lo cual seleccionamos, desde la barra menú, proyecto/Generate Javadoc, y en 'Javadoc command' -> C:\Archivos de programa\Java\jdk 1.6.0_06\bin y finish. Y me debería aparecer una nueva carpeta con la documentación, al estilo de las APIs de JAVA.
Ahora actualizo el código de mi proyecto en eclipse al repositorio -> menú contextual sobre mi proyecto/team/commit, selecciono todas las casillas excepto los .classpath y los .project, y pincho en OK.
Y ya hemos completado nuestro primer proyecto empleando una clase, una clase enum, una clase annotation y una clase de prueba.
¿Más claro?
No hay comentarios:
Publicar un comentario