Autor Tema: prueba eclipe son Junit Test case  (Leído 3373 veces)

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
prueba eclipe son Junit Test case
« en: 11 de Abril 2017, 13:58 »
Hola
tengo que hacer una implementacion de pruebas en eclipse con Junit.
El problema es que el codigo me da varios errores y no soy capaz de dar con la solucion.

El enunciado pide lo siguiente
Dado el código Java de la actividad 2, implementar las pruebas unitarias que permiten comprobar el correcto funcionamiento de la clase Stack. Para esto, usaremos Eclipse y la librería jUnit.
Los pasos a seguir son los siguientes:
4.   Crear una clase de prueba (New JUnit Test Case) llamada TestStack (un caso de prueba JUnit) sobre la clase Stack usando el código adjunto abajo.
5.   Implementar los diferentes métodos de la clase TestStack.
6.   Ejecutar el test y comprobar que no hayan errores. Adjuntar una captura de pantalla de la ejecución de los tests implementados en jUnit.
7.   Adjuntar el código de la clase TestStack con los tests implementados.

El codigo de la actividad 2 es este: esta compilado y sin errores

Código: [Seleccionar]

import java.util.Vector;

/**
 * El funcionamiento de la clase Stack apila objetos de tipo Integer en un
 * vector.
 *
 * @version 1.3 08/04/2017
 * @author javi
 */

public class Stack {
/**
* Declaracion de los atributos privados.
*/
private int tamaño;
private Vector<Integer> elementos;

/**
* Constructor crea un vector y le asigna un valor por defecto al atributo
* tamaño
*/
public Stack() {

elementos = new Vector<Integer>();
tamaño = 0;
}

/**
* El metodo stackVacio comprueba si la pila contiene algun elemento usando
* para ello el valor del atributo tamaño, si dicho valor es igual a 0
* devolvera true y en caso distinto devolvera false
*
*/
public boolean stackVacio() {

if (tamaño == 0) {
return true;
}
return false;
}

/**
* El metodo apilar añade objetos de tipo Integer en el vector elementos de
* la clase.Solo recibe un parametro, en este caso o, puesto que tamaño es
* un atributo de la clase
*
* @param o
* @param tamaño
*/
public void apilar(Integer o) {
elementos.add(tamaño, o);
tamaño++;
}

/**
* Metodo desapilar lo que hace es reducir el valor del atributo tamaño
* restandole uno para que cuando se quiera volver a introducir un nuevo
* objeto en el vector elementos se sobreescriban los existenter, pero no
* borra los anteriores introducido @return @exception
*/
public Integer desapilar() {
try {
if (stackVacio())
throw new ErrorStackVacio();
else {
return elementos.get(--tamaño);
}
} catch (ErrorStackVacio error) {
System.out.println("ERROR: el stack está vacio");
return null;
}
}

/**
*
* metodo que devuelve numero elementos
*
* @return devuelve el ultimo objeto que contiene el vector elementos
*/
public int getNumElements() {
return tamaño;
}

@SuppressWarnings("serial")
class ErrorStackVacio extends Exception {
public ErrorStackVacio() {
super();
}
}

}

Y el codigo sobre el que hay que hacer los test es este
Código: [Seleccionar]
public class TestStack {

@SuppressWarnings("unused")
private Stack stackConElementos;
@SuppressWarnings("unused")
private Stack stackSinElementos;

@Before
public void setUp() throws Exception {
//configurar el test
}

@Test
public void testStackVacio() {
fail("Not yet implemented");

}

@Test
public void testApilar() {
fail("Not yet implemented");
}

@Test
public void testDesapilarStackSinElementos() {
fail("Not yet implemented");
}

@Test
public void testDesapilarStackConElementos() {
fail("Not yet implemented");
}

@Test
public void testGetNumElements() {
fail("Not yet implemented");
}

}


« Última modificación: 11 de Abril 2017, 20:53 por pedro,, »

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:prueba eclipe son Junit Test case
« Respuesta #1 en: 11 de Abril 2017, 20:55 »
Buenas.

¿Qué errores son los que obtienes?

Pega el código con el que estés probando.

Saludos. ;D

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:prueba eclipe son Junit Test case
« Respuesta #2 en: 11 de Abril 2017, 21:01 »
Este es el codigo, pero la verdad no se si lo estoy haciendo bien, el profesor no explico esto bien, y no lo entiendo, agradeceria la ayuda

Código: [Seleccionar]

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.Vector;

import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class TestStack {

private int tamaño;
private Vector<Integer> elementos;
private Stack stackConElementos;
private Stack stackSinElementos;

@Before
public void setUp() throws Exception {
ArrayList<Object> stackConElementos = new ArrayList<>();
stackConElementos.add(1);
stackConElementos.add(2);
stackConElementos.add(3);

}

@Test
public void testStackVacio() {

}

@Test
public void testApilar() {
elementos.add(tamaño, o);
tamaño++;
}

@Test
public Integer testDesapilarStackSinElementos() {
try {
if (testStackVacio())
throw new ErrorStackVacio();
else {
return elementos.get(--tamaño);
}
} catch (ErrorStackVacio error) {
System.out.println("ERROR: el stack está vacio");
return null;
}

}

@Test
public void testDesapilarStackConElementos() {

}

@Test
public int testGetNumElements() {
return tamaño;

}

@SuppressWarnings("serial")
class ErrorStackVacio extends Exception {
public ErrorStackVacio() {
super();
}
}

}


pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Re:prueba eclipe son Junit Test case
« Respuesta #3 en: 12 de Abril 2017, 10:12 »
Buenas.

Te dejo un ejemplo básico de como lo resolvería yo.

Código: [Seleccionar]
import static org.junit.Assert.*;

import org.junit.Before;
import org.junit.Test;


public class StackTest {

@SuppressWarnings("unused")
private Stack stackConElementos;
@SuppressWarnings("unused")
private Stack stackSinElementos;

@Before
public void setUp() throws Exception {

// Insertamos 100 valores (0 a 99) en el objeto stackConElementos para inicializarlo
stackConElementos = new Stack();
for(int i = 0; i < 100; i++){
stackConElementos.apilar(i);
}

// Creamos una instancia de Stack vacía.
stackSinElementos = new Stack();
}

@Test
public void testStackVacio() {

/** Como stackConElementos contendrá valores que asignamos previamente en el
  * método setUp() la respuesta devuelta por el método stackVacio de la clase Stack
  * será false.
  */
assertEquals(false, stackConElementos.stackVacio());

/** En este caso como stackSinElementos no contendrá nada, el método stackVacio de la clase
* Stack devolverña true
*/
assertEquals(true, stackSinElementos.stackVacio());
}

@Test
public void testApilar() {
/** Añadimos un valor a stackConElementos y a stackSinElementos, y para comprobar que el
* método apilar de la clase Stack funciona correctamente hacemos uso de otro de sus
* métodos para comprobar que el tamaño aumento en uno. También se podría hacer usando
* el método desapilar, que devuelve el valor del último valor que contiene cualquier instancia
* de la clase Stack si existiese, si estuviese vacío devolvería null.
*/
stackConElementos.apilar(111);
assertEquals(101, stackConElementos.getNumElements());
stackSinElementos.apilar(333);
assertEquals(1, stackSinElementos.getNumElements());
}

@Test
public void testDesapilarStackSinElementos() {
/** En este caso como stackSinElementos no contiene nada, el método desapilar debería
* devolver null
*/
assertEquals(null, stackSinElementos.desapilar());
}

@Test
public void testDesapilarStackConElementos() {
/** Depués de de la inicialización de stackConElementos, al usar el método desapilar
* este nos devuelve el último valor, en este caso debería ser 99.
*/
Integer n = 99;
assertEquals(n, stackConElementos.desapilar());
}

@Test
public void testGetNumElements() {

/** En este caso comprobamos que el número de elementos que devuelve el método
* getNumElemensts sea el correcto, 100 para stackConElementos y
* 0 para stackSinElemenos.
*/
assertEquals(100, stackConElementos.getNumElements());
assertEquals(0, stackSinElementos.getNumElements());
}

}

Saludos. ;D

javaquery

  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 125
    • Ver Perfil
Re:prueba eclipe son Junit Test case
« Respuesta #4 en: 12 de Abril 2017, 10:31 »
Gracias

Lo hare asi

Un saludo ;D ;D

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".