User Tools

Site Tools


wiki:test_1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
wiki:test_1 [2024/11/12 23:13] adminwiki:test_1 [2024/11/12 23:18] (current) admin
Line 28: Line 28:
 Hoy en día, existen versiones de frameworks xUnit para los principales lenguajes. Por lo tanto, una de las ventajas de las pruebas unitarias es que los desarrolladores no necesitan aprender un nuevo lenguaje de programación, ya que las pruebas se implementan en el mismo lenguaje del sistema que se pretende probar. Hoy en día, existen versiones de frameworks xUnit para los principales lenguajes. Por lo tanto, una de las ventajas de las pruebas unitarias es que los desarrolladores no necesitan aprender un nuevo lenguaje de programación, ya que las pruebas se implementan en el mismo lenguaje del sistema que se pretende probar.
  
-Para explicar los conceptos de pruebas unitarias, usaremos una clase Stack (Pila).+Para explicar los conceptos de pruebas unitarias, usaremos una clase Stack (Pila)
 + 
 +<code java> 
 + 
 +import java.util.ArrayList; 
 +import java.util.EmptyStackException; 
 + 
 +public class Stack<T>
 + 
 +  private ArrayList<T> elements = new ArrayList<T>(); 
 +  private int size = 0; 
 + 
 +  public int size() { 
 +    return size; 
 +  } 
 + 
 +  public boolean isEmpty() { 
 +    return (size == 0); 
 +  } 
 + 
 +  public void push(T elem) { 
 +    elements.add(elem); 
 +    size++; 
 +  } 
 + 
 +  public T pop() throws EmptyStackException { 
 +    if (isEmpty()) 
 +      throw new EmptyStackException(); 
 +    T elem = elements.remove(size-1); 
 +    size--; 
 +    return elem; 
 +  } 
 +
 + 
 +</code> 
 + 
 +JUnit permite implementar clases que probarán — de forma automática — las clases de la aplicación, como la clase Stack. Por convención, las clases de prueba tienen el mismo nombre que las clases que se prueban, pero con el sufijo Test. Por lo tanto, nuestra primera clase de prueba se llamará StackTest. Los métodos de prueba comienzan con el prefijo test y deben cumplir obligatoriamente con las siguientes condiciones: (1) ser públicos, ya que serán llamados por JUnit; (2) no tener parámetros; (3) tener la anotación @Test, la cual identifica los métodos que deben ejecutarse durante una prueba. 
 + 
 +A continuación, mostramos nuestra primera prueba unitaria: 
 + 
 +<code java> 
 + 
 +import org.junit.Test; 
 +import static org.junit.Assert.assertTrue; 
 + 
 +public class StackTest { 
 + 
 +  @Test 
 +  public void testEmptyStack() { 
 +    Stack<Integer> stack = new Stack<Integer>(); 
 +    boolean empty = stack.isEmpty(); 
 +    assertTrue(empty); 
 +  } 
 + 
 +
 + 
 +</code> 
 + 
 +En esta primera versión, la clase StackTest tiene un único método de prueba, público, anotado con ''@Test'' y llamado ''testEmptyStack()''. Este método solo crea una pila y verifica si está vacía. 
 + 
 +Los métodos de prueba tienen la siguiente estructura: 
 + 
 +  * Primero, se crea el contexto de la prueba, también llamado fixture. Para ello, se deben instanciar los objetos que se van a probar y, si es necesario, inicializarlos. En nuestro primer ejemplo, esta parte de la prueba incluye solo la creación de una pila llamada stack. 
 + 
 +  * A continuación, la prueba debe llamar a uno de los métodos de la clase que se está probando. En el ejemplo, llamamos al método isEmpty() y almacenamos su resultado en una variable local. 
 + 
 +  * Finalmente, debemos comprobar si el resultado del método es el esperado. Para ello, se utiliza un comando llamado assert. De hecho, JUnit ofrece varias variantes de assert, pero todas tienen el mismo objetivo: comprobar si un determinado resultado es igual a un valor esperado. En el ejemplo, usamos assertTrue, que verifica si el valor pasado como parámetro es verdadero. 
 + 
 +Las IDEs ofrecen opciones para ejecutar solo las pruebas de un sistema, por ejemplo, a través de una opción de menú llamada Run as Test. Es decir, si el desarrollador selecciona Run, ejecutará su programa normalmente, comenzando por el método main. Sin embargo, si elige la opción Run as Test, no ejecutará el programa, sino solo sus pruebas unitarias.
  
wiki/test_1.1731463999.txt.gz · Last modified: 2024/11/12 23:13 by admin