Eseguire test con GitHub Actions
Integri test unitari e di integrazione automatizzati nella pipeline CI per garantire la qualità del codice e prevenire regressioni.
Eseguire test con GitHub Actions è una lezione CI/CD with GitHub Actions & DevOps Pipelines gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CI/CD with GitHub Actions & DevOps Pipelines, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.
Perché automatizzare i test nella CI?
Immagini di apportare una modifica al codice e di sapere immediatamente se ha causato problemi altrove. Questo è il potere dei test automatizzati nella pipeline CI!
La Continuous Integration (CI) consiste nell'unire frequentemente le modifiche al codice in un repository centrale. I test automatizzati sono i garanti di questo processo.
Rilevano i bug in anticipo, forniscono un feedback rapido e aumentano la fiducia in ogni modifica al codice.
Tipi di test nella pipeline
Quando si parla di test automatizzati, vengono spesso citati due tipi principali: unit test e integration test.
- Unit test: si concentrano su piccole parti isolate del codice, come una singola funzione o un metodo. Sono veloci e individuano con precisione i problemi.
- Integration test: verificano che le diverse parti del sistema funzionino correttamente insieme, ad esempio il codice che interagisce con un database o un'API.
Entrambi sono fondamentali per garantire che il software sia robusto e affidabile.
Automatizzare i test con GitHub Actions
GitHub Actions può fungere da test runner personale, eseguendo automaticamente i test ogni volta che invia nuovo codice.
Si definisce un workflow che specifica quando eseguirlo, quale ambiente usare e quali comandi eseguire.
In questo modo ogni modifica viene convalidata in modo coerente, senza interventi manuali.
Preparare un progetto Java per i test
Per la dimostrazione useremo un semplice progetto Java gestito con Maven, un diffuso strumento di automazione della compilazione.
Maven aiuta a gestire le dipendenze del progetto e fornisce comandi per compilare il codice ed eseguire i test.
Il progetto includerà una semplice classe Java e un test JUnit corrispondente, a livello concettuale.
Il nostro primo esempio di test eseguibile
Ecco una semplice classe Java e un test di base per verificarne il funzionamento. Per semplicità, simuleremo un unit test senza una configurazione completa di JUnit.
Il metodo main funge da test runner e verifica che il metodo add funzioni come previsto.
Provi a eseguirlo per vedere l'output!
public class Calculator {
// Method to be tested
public int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
Calculator calc = new Calculator();
// Simulate a test case
int expected = 5;
int actual = calc.add(2, 3);
if (actual == expected) {
System.out.println("Test Passed: 2 + 3 = " + actual);
} else {
System.out.println("Test Failed: Expected " + expected + ", Got " + actual);
}
}
}Creare il workflow di test
Ora vediamo come apparirebbe un file di workflow di GitHub Actions (.github/workflows/test.yml) per eseguire i nostri test.
Questo file YAML definisce i passaggi che GitHub Actions eseguirà per configurare l'ambiente ed eseguire i comandi di test.
In un progetto reale useremo il comando test di Maven per eseguire gli eventuali test JUnit.
name: Java CI with Maven
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: maven
- name: Run Maven Tests
run: mvn test
Comprendere ogni passaggio del workflow
Analizziamo i passaggi principali del nostro workflow di test:
on: push / pull_request: attiva il workflow quando viene inviato del codice o viene creata una pull request per il branchmain.runs-on: ubuntu-latest: specifica il sistema operativo della macchina virtuale, il runner, in cui verrà eseguito il workflow.actions/checkout@v4: è un'azione predefinita che estrae il codice del repository sul runner.actions/setup-java@v4: è un'altra azione che configura il Java Development Kit (JDK) sul runner.run: mvn test: è il passaggio fondamentale! Esegue il comando Maven per compilare il codice ed eseguire tutti i test definiti.
Gestire i test non riusciti nella CI
Un vantaggio fondamentale dei test nella CI è il feedback immediato. Se un test non riesce, il job del workflow di GitHub Actions fallisce.
Questo segnala chiaramente che la modifica recente al codice ha introdotto un bug o una regressione.
È quindi possibile esaminare i log del workflow per individuare esattamente quale test è fallito e perché, facilitando la risoluzione rapida dei problemi.
L'impatto: qualità e fiducia
Integrare i test automatizzati nella pipeline CI è un elemento fondamentale dello sviluppo software moderno.
Previene attivamente le regressioni, garantisce una qualità del codice uniforme e riduce significativamente il rischio di distribuire funzionalità non funzionanti.
Questo processo aumenta la fiducia nella base di codice e consente al team di innovare più rapidamente e con maggiore affidabilità.
Verifica del workflow di test
Consideri un workflow di GitHub Actions progettato per eseguire dei test. Qual è lo scopo principale del passaggio run: mvn test in un progetto Java?
Riepilogo: test nella pipeline CI
In questa lezione abbiamo visto come integrare i test automatizzati nella pipeline CI di GitHub Actions.
Abbiamo trattato:
- L'importanza dei test automatizzati per la qualità del codice.
- La differenza tra unit test e integration test.
- Come strutturare un workflow di GitHub Actions per eseguire test Java usando Maven.
- La funzione di passaggi del workflow come
checkoutesetup-java. - Il ruolo fondamentale di
mvn testnell'esecuzione dei test. - Come GitHub Actions segnala i test non riusciti.
I test automatizzati sono fondamentali per individuare i bug in anticipo e mantenere una base di codice robusta!
Domande Frequenti
La lezione «Eseguire test con GitHub Actions» è gratuita?
Sì — il testo completo di «Eseguire test con GitHub Actions» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CI/CD with GitHub Actions & DevOps Pipelines, passa a CoddyKit PRO. Il corso CI/CD with GitHub Actions & DevOps Pipelines include 4 lezioni in totale.
Cosa imparerò in «Eseguire test con GitHub Actions»?
Integri test unitari e di integrazione automatizzati nella pipeline CI per garantire la qualità del codice e prevenire regressioni. Eserciti CI/CD with GitHub Actions & DevOps Pipelines con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare CI/CD with GitHub Actions & DevOps Pipelines?
Non è richiesta alcuna esperienza precedente. CI/CD with GitHub Actions & DevOps Pipelines su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Eseguire test con GitHub Actions»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione CI/CD with GitHub Actions & DevOps Pipelines?
Sì. Ogni lezione CI/CD with GitHub Actions & DevOps Pipelines include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Trigger ed eventi dei workflow
- Eseguire test con GitHub Actions
- Linting e controlli della qualità del codice
- Memorizzare le dipendenze nella cache per build più rapide