Groovy - Prueba unitaria

La unidad fundamental de un sistema orientado a objetos es la clase. Por lo tanto, las pruebas unitarias consisten en realizar pruebas dentro de una clase. El enfoque adoptado es crear un objeto de la clase bajo prueba y usarlo para verificar que los métodos seleccionados se ejecuten como se esperaba. No todos los métodos pueden probarse, ya que no siempre es práctico probar todos y cada uno de los elementos. Pero se deben realizar pruebas unitarias para métodos clave y críticos.

JUnit es un marco de prueba de código abierto que es el estándar industrial aceptado para la prueba unitaria automatizada de código Java. Afortunadamente, el marco JUnit se puede usar fácilmente para probar las clases Groovy. Todo lo que se requiere es extender la clase GroovyTestCase que es parte del entorno estándar de Groovy. La clase de caso de prueba Groovy se basa en el caso de prueba de Junit.

Escribir un caso de prueba simple de Junit

Supongamos que tenemos la siguiente clase definida en un archivo de clase de aplicación:

class Example {
   static void main(String[] args) {
      Student mst = new Student();
      mst.name = "Joe";
      mst.ID = 1;
      println(mst.Display())
   } 
} 
 
public class Student {
   String name;
   int ID;
	
   String Display() {
      return name +ID;
   }  
}

El resultado del programa anterior se muestra a continuación.

Joe1

Y ahora supongamos que quisiéramos escribir un caso de prueba para la clase de Estudiantes. Un caso de prueba típico se vería como el siguiente. Los siguientes puntos deben tenerse en cuenta sobre el siguiente código:

  • La clase de caso de prueba extiende la clase GroovyTestCase
  • Estamos usando la declaración assert para asegurarnos de que el método Display devuelva la cadena correcta.
class StudentTest extends GroovyTestCase {
   void testDisplay() {
      def stud = new Student(name : 'Joe', ID : '1')
      def expected = 'Joe1'
      assertToString(stud.Display(), expected)
   }
}

La suite de pruebas Groovy

Normalmente, a medida que aumenta el número de pruebas unitarias, resultará difícil seguir ejecutando todos los casos de prueba uno por uno. Por lo tanto, Groovy ofrece la posibilidad de crear un conjunto de pruebas que puede encapsular todos los casos de prueba en una unidad lógica. El siguiente código nippet muestra cómo se puede lograr. Se deben tener en cuenta las siguientes cosas sobre el código:

  • GroovyTestSuite se utiliza para encapsular todos los casos de prueba en uno.

  • En el siguiente ejemplo, asumimos que tenemos dos archivos de casos de prueba, uno llamado StudentTest y el otro es EmployeeTest que contiene todas las pruebas necesarias.

import groovy.util.GroovyTestSuite 
import junit.framework.Test 
import junit.textui.TestRunner 

class AllTests { 
   static Test suite() { 
      def allTests = new GroovyTestSuite() 
      allTests.addTestSuite(StudentTest.class) 
      allTests.addTestSuite(EmployeeTest.class) 
      return allTests 
   } 
} 

TestRunner.run(AllTests.suite())