Testare il Tuo Codice PHP con PHPUnit

PHP

Scrivere codice senza test è come costruire un palazzo senza fondamenta: prima o poi, crollerà. Il testing automatico è una pratica fondamentale per garantire che la tua applicazione funzioni come previsto e per poterla modificare in futuro senza paura di rompere qualcosa. In PHP, lo strumento standard per questo è PHPUnit.

Cos'è PHPUnit?

PHPUnit è un framework di testing per PHP, ispirato a JUnit per Java. Ti fornisce una struttura e un insieme di strumenti per scrivere e lanciare diversi tipi di test, principalmente test unitari e test di integrazione.

Scrivere il Primo Test

I test in PHPUnit sono classi PHP che estendono `PHPUnit\Framework\TestCase`. Ogni metodo pubblico nella classe che inizia con la parola `test` è un test.

Immagina di avere una semplice classe `Calcolatrice`:

// src/Calcolatrice.php
class Calcolatrice {
    public function somma($a, $b) {
        return $a + $b;
    }
}

Il test unitario corrispondente potrebbe essere:

// tests/CalcolatriceTest.php
use PHPUnit\Framework\TestCase;

require 'src/Calcolatrice.php';

class CalcolatriceTest extends TestCase {
    public function testSommaDiNumeriPositivi() {
        // Arrange
        $calcolatrice = new Calcolatrice();

        // Act
        $risultato = $calcolatrice->somma(2, 3);

        // Assert
        $this->assertEquals(5, $risultato, "2 + 3 dovrebbe fare 5");
    }
}

Le Asserzioni (Assertions)

Il cuore di ogni test è l'asserzione. È il momento in cui dici a PHPUnit quale dovrebbe essere il risultato atteso. Se l'asserzione è vera, il test passa. Se è falsa, il test fallisce. PHPUnit fornisce decine di metodi di asserzione, tra cui:

  • `assertEquals($atteso, $attuale)`: Verifica che due valori siano uguali.
  • `assertTrue($condizione)`: Verifica che una condizione sia vera.
  • `assertCount($numero_atteso, $array)`: Verifica che un array abbia un certo numero di elementi.
  • `assertInstanceOf($classe_attesa, $oggetto)`: Verifica che un oggetto sia un'istanza di una certa classe.

Lanciare i Test

PHPUnit si installa con Composer come dipendenza di sviluppo. I test si lanciano da riga di comando. PHPUnit scansionerà la cartella dei test ed eseguirà tutti i test che trova, restituendo un report dei successi e dei fallimenti.

Integrare PHPUnit in un flusso di lavoro di Continuous Integration (CI), insieme all'analisi statica, è la chiave per costruire applicazioni PHP robuste e di alta qualità.

Hai bisogno di una soluzione su misura?

Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.

Richiedi una consulenza