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.