Pruebas con JUnit y Arrays de String

package prueba_DAO; import java.util.*; /** * @author GALIA * @version 1.0 */ public class Base_De_Datos { /* Atributos de la clase */ public static Base_De_Datos array_datos; private Vector<String> elementos; /* Constructor */ public Base_De_Datos(String[] datos) { /* Verificamos que la lista tenga valores */ if ((datos == null) || (datos.length == 0)) throw new IllegalArgumentException(); this.elementos = new Vector<String>(); for (String elemento : datos) { elementos.addElement(elemento); } } /** * @return Devuelve la cadena que tiene más caracteres */ public String getMaxLength() { String longitud_maxima = ""; for (String elemento : elementos) { if (elemento.length() > longitud_maxima.length()) { longitud_maxima = elemento; } } return longitud_maxima; } /** * @return Devuelve la suma de la longitud de todas las cadenas */ public int getTotalLength() { int total = 0; for (String elemento : elementos) { total += elemento.length(); } return total; } /** * @param cadena_buscada * Cadena buscada * @return Devuelve la posición de un elemento dentro del array * @throws java.util.NoSuchElementException * Si el elemento no existe en la lista */ public int getIndexOf(String cadena_buscada) throws java.util.NoSuchElementException { int posicion_cadena = 0; /* Comprobamos que el argumento sea válido */ if (cadena_buscada == null) { throw new IllegalArgumentException(); } /* Recorremos la información hasta encontrar el elemento */ for (String elemento : elementos) { if (elemento.equals(cadena_buscada)) { return posicion_cadena; } posicion_cadena++; } /* El elemento no existía, lanzamos la excepción */ throw new java.util.NoSuchElementException(cadena_buscada); } } Y aquí la clase para hacer las pruebas en JUnit import static org.junit.Assert.*; import java.io.*; import java.util.*; import org.junit.*; import prueba_DAO.Base_De_Datos; import org.junit.runner.JUnitCore; import junit.framework.JUnit4TestAdapter; public class Base_De_DatosTest { @BeforeClass public static void inicioClase() { try { /* * Leemos desde un fichero, los datos con los que vamos a realizar * las pruebas */ FileReader reader = new FileReader("Datos de los clientes.txt"); BufferedReader buffer = new BufferedReader(reader); String linea = buffer.readLine(); Vector<String> elementos_leidos = new Vector<String>(); while (linea != null) { elementos_leidos.addElement(linea); linea = buffer.readLine(); } /* Creamos el String[] a partir de los datos leídos del fichero */ String[] elementos_volcados = new String[elementos_leidos.size()]; elementos_leidos.copyInto(elementos_volcados); Base_De_Datos.array_datos = new Base_De_Datos(elementos_volcados); /* Liberamos recursos */ elementos_leidos.removeAllElements(); reader.close(); } catch (IOException ex) { System.out.println("Error"); } } /* Este método liberaría los recursos reservados en BeforeClass */ @AfterClass public static void finClase() { } /* * Este método se ejecuta para cada prueba ANTES de invocar el código de * cada prueba */ @Before public void testStart() { } /* * Este método se ejecuta para cada prueba DESPUÉS de invocar el código de * cada prueba. */ @After public void testEnd() { } /* * Verificamos que en caso de recibir un null como argumento en el * constructor la clase lanza una IllegalArgumentException */ @Test(expected = java.lang.IllegalArgumentException.class) public void initTest() { new Base_De_Datos(null); } /* * Verificamos que la cadena más larga sea la cadena * "María Moliner, Segovia" */ @Test public void getLengthTest() { Assert.assertEquals("Maria Moliner, Segovia", Base_De_Datos.array_datos.getMaxLength()); } /* * Prueba sobre el método que devuelve la suma total de todas las cadenas * almacenadas Suponemos que el calculo del tamaño total es un método * crítico que debe realizarse antes de 10 milisegundos */ @Test(timeout = 10) public void getTotalLengthTest() { assertEquals(48, Base_De_Datos.array_datos.getTotalLength()); } /** * Prueba sobre el método que devuelve la posición de una cadena. * Verificamos que si le pasamos null como argumento lanza la excepción * correcta */ @Test(expected = java.lang.IllegalArgumentException.class) public void getIndexOfTest() { Base_De_Datos.array_datos.getIndexOf(null); } /* * Prueba sobre el método que devuelve la posición de una cadena Verificamos * que si le pasamos una cadena que no existe como argumento lanza la * excepción correcta */ @Test(expected = java.util.NoSuchElementException.class) public void getIndexOfTest2() { assertEquals(0, Base_De_Datos.array_datos.getIndexOf("EsteElementoNoExiste")); } /** * Prueba sobre el método que devuelve la posición de una cadena. * Verificamos que si le pasamos una cadena que existe devuelve la posición * correcta */ @Test public void getIndexOfTest3() { Assert.assertEquals(1, Base_De_Datos.array_datos.getIndexOf("Galia")); } @Ignore("Este test no se hace, solo ejemplo") @Test public void ignore() { } /* * @return Para mantener compatibilidad con las herramientas que tratan con * versiones anteriores de JUnit */ public static junit.framework.Test suite() { return new JUnit4TestAdapter(Base_De_DatosTest.class); } /* * Lanza las pruebas sin compatibilidad hacia atrás, es decir se requiere * Java 5 y JUnit4 instalado */ public static void main(String[] args) { JUnitCore.runClasses(Base_De_DatosTest.class); } }
Hay que crear previamente el archivo de texto e escribir las cadenas que se vayan a testar.

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.