PHPUnit¶
PHPUnit est une librairie permettant de réaliser des tests de votre code PHP. (même principe que vous avez vu en C#)
Pour installation, aller directement sur le site de PHPUnit
Exemple
Lors de l’exercice des commandes, dans la classe Order, nous allons tester la méthode public computeVAT().
/**
* calcule de la TVA
*
* @return float
*/
public function computeVAT() {
$sumTVA = $this->sum() * 0.077;
return $this->special_round($sumTVA, 0.05);
}
use PHPUnit\Framework\TestCase;
require __DIR__ . "/../src/Product.php";
require __DIR__ . "/../src/Customer.php";
require __DIR__ . "/../src/Order.php";
class OrderTest extends TestCase {
/**
* test sur le calcul de la TVA
*/
public function testComputeTVAWithOneProduct() {
$product = new Product('Un produit', 'Une description', 40.0);
$customer = new Customer();
$order = new Order($customer, $product);
$this->assertSame(3.1, $order->computeVAT());
}
}
L’utilisation de PHPUnit se fait via une ligne de commande. Il suffit de lancer les tests.
# Pour lancer un test sur une classe spécifique
./vendor/bin/phpunit --bootstrap vendor/autoload.php tests/OrderTest
# Rendu dans le cas où le test ne passe passe
PHPUnit 8.0.0 by Sebastian Bergmann and contributors.
F 1 / 1 (100%)
Time: 250 ms, Memory: 4.00 MB
There was 1 failure:
1) OrderTest::testComputeTVAWithOneProduct
Failed asserting that 3.1 is identical to 1.1.
C:\UwAmp\www\133CommandeAvecTest\tests\OrderTest.php:22
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
# Rendu dans le cas où le test passe
PHPUnit 8.0.0 by Sebastian Bergmann and contributors.
. 1 / 1 (100%)
Time: 172 ms, Memory: 4.00 MB
OK (1 test, 1 assertion)
# Pour lancer tous les tests du dossier
./vendor/bin/phpunit --testdox tests/
# Rendu dans le cas où le test ne passe passe
PHPUnit 8.0.0 by Sebastian Bergmann and contributors.
Order
✘ Compute t v a with one product
│
│ Failed asserting that 3.1 is identical to 1.55.
│
│ C:\UwAmp\www\133CommandeAvecTest\tests\OrderTest.php:18
│
Time: 242 ms, Memory: 4.00 MB
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
# Rendu dans le cas où le test passe
PHPUnit 8.0.0 by Sebastian Bergmann and contributors.
Order
✔ Compute t v a with one product
Time: 172 ms, Memory: 4.00 MB
OK (1 test, 1 assertion)