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