En esta sección, aprenderás cómo probar y depurar tu proyecto en Dart. Las pruebas y la depuración son componentes esenciales del desarrollo de software, ya que aseguran que tu código funcione correctamente y te ayudan a identificar y corregir errores.

  1. Introducción a las Pruebas

1.1. ¿Qué son las Pruebas?

Las pruebas son procedimientos que verifican que tu código funcione como se espera. Existen varios tipos de pruebas, pero en este módulo nos enfocaremos en las pruebas unitarias y de integración.

1.2. Tipos de Pruebas

  • Pruebas Unitarias: Verifican el funcionamiento de una unidad específica de código, como una función o un método.
  • Pruebas de Integración: Verifican que diferentes unidades de código funcionen juntas correctamente.

  1. Configuración del Entorno de Pruebas

2.1. Instalación del Paquete test

Para realizar pruebas en Dart, utilizaremos el paquete test. Puedes agregarlo a tu proyecto mediante el archivo pubspec.yaml:

dev_dependencies:
  test: ^1.16.0

Luego, ejecuta el siguiente comando para instalar el paquete:

dart pub get

2.2. Estructura de Archivos de Pruebas

Es una buena práctica mantener tus archivos de pruebas en un directorio separado llamado test. Por ejemplo:

lib/
  main.dart
test/
  main_test.dart

  1. Escribiendo Pruebas Unitarias

3.1. Ejemplo de Prueba Unitaria

A continuación, se muestra un ejemplo de cómo escribir una prueba unitaria en Dart:

// Archivo: lib/calculadora.dart
class Calculadora {
  int sumar(int a, int b) {
    return a + b;
  }
}
// Archivo: test/calculadora_test.dart
import 'package:test/test.dart';
import '../lib/calculadora.dart';

void main() {
  group('Calculadora', () {
    test('sumar dos números', () {
      final calculadora = Calculadora();
      expect(calculadora.sumar(2, 3), 5);
    });
  });
}

3.2. Ejecutando Pruebas

Para ejecutar tus pruebas, utiliza el siguiente comando:

dart test

  1. Depuración

4.1. Uso de print para Depuración

Una forma sencilla de depurar tu código es utilizando la función print para mostrar valores en la consola:

void main() {
  int a = 5;
  int b = 10;
  print('El valor de a es $a y el valor de b es $b');
}

4.2. Depuración con IDEs

La mayoría de los IDEs modernos, como Visual Studio Code y IntelliJ IDEA, tienen herramientas integradas de depuración que te permiten:

  • Establecer puntos de interrupción (breakpoints): Pausar la ejecución del programa en una línea específica.
  • Inspeccionar variables: Ver los valores de las variables en tiempo de ejecución.
  • Paso a paso (step over, step into, step out): Ejecutar el código línea por línea para entender el flujo del programa.

4.3. Ejemplo de Depuración en Visual Studio Code

  1. Establecer un Punto de Interrupción: Haz clic en el margen izquierdo junto a la línea de código donde deseas pausar la ejecución.
  2. Iniciar la Depuración: Haz clic en el icono de depuración en la barra lateral y selecciona "Start Debugging".
  3. Inspeccionar Variables: Una vez que la ejecución se pausa, puedes ver los valores de las variables en el panel de variables.

  1. Ejercicios Prácticos

Ejercicio 1: Prueba Unitaria

Escribe una prueba unitaria para una función que multiplique dos números.

// Archivo: lib/multiplicadora.dart
class Multiplicadora {
  int multiplicar(int a, int b) {
    return a * b;
  }
}

Solución:

// Archivo: test/multiplicadora_test.dart
import 'package:test/test.dart';
import '../lib/multiplicadora.dart';

void main() {
  group('Multiplicadora', () {
    test('multiplicar dos números', () {
      final multiplicadora = Multiplicadora();
      expect(multiplicadora.multiplicar(2, 3), 6);
    });
  });
}

Ejercicio 2: Depuración

Depura el siguiente código para encontrar y corregir el error:

void main() {
  int a = 5;
  int b = 0;
  int resultado = a ~/ b;
  print('El resultado es $resultado');
}

Solución:

El error es una división por cero. Puedes corregirlo añadiendo una verificación antes de la división:

void main() {
  int a = 5;
  int b = 0;
  if (b != 0) {
    int resultado = a ~/ b;
    print('El resultado es $resultado');
  } else {
    print('Error: División por cero');
  }
}

  1. Conclusión

En esta sección, has aprendido cómo escribir y ejecutar pruebas unitarias, así como técnicas básicas de depuración. Estas habilidades son cruciales para garantizar que tu código funcione correctamente y para identificar y corregir errores de manera eficiente. En el siguiente tema, aplicarás estas técnicas en el contexto del proyecto final, asegurando que todas las funcionalidades implementadas sean robustas y libres de errores.

© Copyright 2024. Todos los derechos reservados