La integración continua (CI) es una práctica de desarrollo de software en la que los desarrolladores integran su código en un repositorio compartido varias veces al día. Cada integración es verificada por una construcción automatizada (incluyendo pruebas) para detectar errores lo antes posible. JUnit, como framework de pruebas unitarias, juega un papel crucial en este proceso al permitir la ejecución automática de pruebas cada vez que se realiza una integración.

Conceptos Clave de Integración Continua

  1. Repositorio de Código Compartido: Un lugar central donde todos los desarrolladores suben su código.
  2. Construcción Automatizada: Un proceso que compila el código y ejecuta pruebas automáticamente.
  3. Pruebas Automatizadas: Pruebas que se ejecutan sin intervención manual, asegurando que el código funciona como se espera.
  4. Feedback Rápido: Notificaciones inmediatas sobre el estado de la construcción y las pruebas.

Configurando Integración Continua con JUnit

Paso 1: Configurar un Sistema de CI

Existen varias herramientas populares para la integración continua, como Jenkins, Travis CI, CircleCI, y GitHub Actions. A continuación, se muestra un ejemplo de configuración básica usando GitHub Actions.

Paso 2: Crear un Archivo de Configuración para GitHub Actions

  1. Crear el Directorio de Workflow:

    • En tu repositorio, crea un directorio .github/workflows.
  2. Crear el Archivo de Workflow:

    • Dentro del directorio workflows, crea un archivo ci.yml.

Ejemplo de Archivo ci.yml

name: Java CI with Maven

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v2

    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'

    - name: Build with Maven
      run: mvn clean install

    - name: Run tests
      run: mvn test

Explicación del Archivo

  • name: Nombre del workflow.
  • on: Define los eventos que desencadenan el workflow (push y pull_request en la rama main).
  • jobs: Define los trabajos que se ejecutarán.
    • build: Nombre del trabajo.
    • runs-on: Define el sistema operativo en el que se ejecutará el trabajo (ubuntu-latest).
    • steps: Lista de pasos a ejecutar.
      • Checkout repository: Usa la acción actions/checkout@v2 para clonar el repositorio.
      • Set up JDK 11: Usa la acción actions/setup-java@v2 para configurar JDK 11.
      • Build with Maven: Ejecuta mvn clean install para compilar el proyecto.
      • Run tests: Ejecuta mvn test para correr las pruebas de JUnit.

Paso 3: Verificar la Configuración

  1. Commit y Push: Realiza un commit y push de los cambios al repositorio.
  2. Verificar en GitHub: Ve a la pestaña "Actions" en tu repositorio de GitHub para ver el estado del workflow.

Ejercicio Práctico

Ejercicio 1: Configurar CI con GitHub Actions

  1. Objetivo: Configurar un workflow de CI en GitHub Actions para un proyecto Java con pruebas JUnit.
  2. Pasos:
    • Crea un repositorio en GitHub.
    • Añade un proyecto Java con pruebas JUnit.
    • Configura el archivo ci.yml como se muestra en el ejemplo.
    • Realiza un commit y push de los cambios.
    • Verifica que el workflow se ejecute correctamente en la pestaña "Actions".

Solución

  1. Crear el Repositorio:

    • Ve a GitHub y crea un nuevo repositorio.
  2. Añadir Proyecto Java:

    • Crea un proyecto Java con Maven y añade algunas pruebas JUnit.
  3. Configurar ci.yml:

    • Sigue los pasos descritos anteriormente para crear y configurar el archivo ci.yml.
  4. Commit y Push:

    • Realiza un commit y push de los cambios.
  5. Verificar en GitHub:

    • Ve a la pestaña "Actions" y verifica que el workflow se ejecute correctamente.

Conclusión

La integración continua es una práctica esencial en el desarrollo de software moderno, y JUnit es una herramienta poderosa para asegurar la calidad del código a través de pruebas automatizadas. Configurar un sistema de CI con herramientas como GitHub Actions permite a los desarrolladores recibir feedback rápido sobre el estado de su código, facilitando la detección y corrección de errores de manera eficiente. Con esta configuración, estarás mejor preparado para mantener un código de alta calidad y un proceso de desarrollo ágil.

© Copyright 2024. Todos los derechos reservados