Introducción

Las pruebas unitarias son una parte esencial del desarrollo de software, ya que permiten verificar que las unidades individuales de código (como métodos y clases) funcionen correctamente. En Ruby, Minitest es una biblioteca popular para realizar pruebas unitarias. En esta sección, aprenderás a escribir y ejecutar pruebas unitarias utilizando Minitest.

¿Qué es Minitest?

Minitest es una biblioteca de pruebas para Ruby que proporciona un conjunto completo de herramientas para escribir y ejecutar pruebas. Es ligera, rápida y viene incluida en la biblioteca estándar de Ruby, lo que significa que no necesitas instalar nada adicional para comenzar a usarla.

Configuración del Entorno

Antes de comenzar a escribir pruebas con Minitest, asegúrate de tener Ruby instalado en tu sistema. Puedes verificarlo ejecutando el siguiente comando en tu terminal:

ruby -v

Si Ruby está instalado, deberías ver la versión de Ruby en la salida. Si no está instalado, sigue las instrucciones en Configuración del Entorno para instalar Ruby.

Escribiendo tu Primera Prueba con Minitest

Vamos a escribir una prueba simple para una clase Calculator que tiene un método add para sumar dos números.

Paso 1: Crear la Clase Calculator

Primero, crea un archivo llamado calculator.rb y define la clase Calculator con el método add:

# calculator.rb
class Calculator
  def add(a, b)
    a + b
  end
end

Paso 2: Crear el Archivo de Pruebas

Crea un archivo llamado test_calculator.rb donde escribirás tus pruebas. Este archivo debe requerir tanto Minitest como la clase Calculator.

# test_calculator.rb
require 'minitest/autorun'
require_relative 'calculator'

class TestCalculator < Minitest::Test
  def test_add
    calculator = Calculator.new
    result = calculator.add(2, 3)
    assert_equal 5, result
  end
end

Explicación del Código

  • require 'minitest/autorun': Esto carga Minitest y configura el entorno para ejecutar las pruebas automáticamente.
  • require_relative 'calculator': Esto carga la clase Calculator que vamos a probar.
  • class TestCalculator < Minitest::Test: Define una clase de prueba que hereda de Minitest::Test.
  • def test_add: Define un método de prueba. Los métodos de prueba deben comenzar con test_.
  • calculator = Calculator.new: Crea una instancia de la clase Calculator.
  • result = calculator.add(2, 3): Llama al método add con los argumentos 2 y 3.
  • assert_equal 5, result: Verifica que el resultado sea 5. Si no lo es, la prueba fallará.

Paso 3: Ejecutar las Pruebas

Para ejecutar las pruebas, simplemente ejecuta el archivo test_calculator.rb en tu terminal:

ruby test_calculator.rb

Deberías ver una salida similar a la siguiente:

Run options: --seed 12345

# Running:

.

Finished in 0.001234s, 1.0000 runs/s, 1.0000 assertions/s.

1 runs, 1 assertions, 0 failures, 0 errors, 0 skips

Esto indica que se ejecutó una prueba (1 runs) y que todas las aserciones pasaron (0 failures).

Ejercicios Prácticos

Ejercicio 1: Prueba del Método subtract

Añade un método subtract a la clase Calculator y escribe una prueba para él.

Solución

  1. Modifica la clase Calculator para incluir el método subtract:
# calculator.rb
class Calculator
  def add(a, b)
    a + b
  end

  def subtract(a, b)
    a - b
  end
end
  1. Añade una prueba para el método subtract en test_calculator.rb:
# test_calculator.rb
require 'minitest/autorun'
require_relative 'calculator'

class TestCalculator < Minitest::Test
  def test_add
    calculator = Calculator.new
    result = calculator.add(2, 3)
    assert_equal 5, result
  end

  def test_subtract
    calculator = Calculator.new
    result = calculator.subtract(5, 3)
    assert_equal 2, result
  end
end
  1. Ejecuta las pruebas:
ruby test_calculator.rb

Ejercicio 2: Prueba del Método multiply

Añade un método multiply a la clase Calculator y escribe una prueba para él.

Solución

  1. Modifica la clase Calculator para incluir el método multiply:
# calculator.rb
class Calculator
  def add(a, b)
    a + b
  end

  def subtract(a, b)
    a - b
  end

  def multiply(a, b)
    a * b
  end
end
  1. Añade una prueba para el método multiply en test_calculator.rb:
# test_calculator.rb
require 'minitest/autorun'
require_relative 'calculator'

class TestCalculator < Minitest::Test
  def test_add
    calculator = Calculator.new
    result = calculator.add(2, 3)
    assert_equal 5, result
  end

  def test_subtract
    calculator = Calculator.new
    result = calculator.subtract(5, 3)
    assert_equal 2, result
  end

  def test_multiply
    calculator = Calculator.new
    result = calculator.multiply(4, 3)
    assert_equal 12, result
  end
end
  1. Ejecuta las pruebas:
ruby test_calculator.rb

Resumen

En esta sección, aprendiste a escribir y ejecutar pruebas unitarias utilizando Minitest en Ruby. Cubrimos los siguientes puntos:

  • Qué es Minitest y cómo configurarlo.
  • Cómo escribir una prueba simple para una clase Calculator.
  • Cómo ejecutar las pruebas y verificar los resultados.
  • Ejercicios prácticos para reforzar los conceptos aprendidos.

En la siguiente sección, exploraremos el Desarrollo Guiado por Comportamiento (BDD) con RSpec, otra herramienta popular para pruebas en Ruby.

© Copyright 2024. Todos los derechos reservados