Questo è un piccolo esempio di testing di Phpunit.
Per installare qui c’è la guida dal sito ufficiale (link).
<?php
class Sum
{
private $total;
private $timeAdd;
public function __construct($config = []) {
$this->total = 0;
$this->timeAdd = 0;
}
public function add($Value)
{
if(!is_numeric($Value))
throw new Exception('Value is not numeric');
$this->total += $Value;
$this->timeAdd++;
}
public function getTotal()
{
return $this->total;
}
public function getMedia()
{
if($this->timeAdd==0)
throw new Exception('timeAdd equal zero');
return ($this->total/$this->timeAdd);
}
}
?>
Per il codice di testing:
<?php
use PHPUnit\Framework\TestCase;
final class classSumTest extends TestCase
{
public function testTotalAndMedia(): void
{
require "classSum.php";
$A = new Sum;
$this->assertEquals($A->getTotal() , 0);
$A->add(5);
$this->assertEquals($A->getTotal() , 5);
$this->assertEquals($A->getMedia() , 5);
$A->add(15);
$this->assertEquals($A->getTotal() , 20);
$this->assertEquals($A->getMedia() , 10);
}
public function testTotalMediaWithIteration(): void
{
$B = new Sum;
for($i=0;$i<10;$i++)
{
$B->add(1);
$this->assertEquals($B->getTotal() , $i+1);
$this->assertEquals($B->getMedia() , 1);
}
}
public function testErrorOfAdd(): void
{
$A2 = new Sum;
$this->expectException(Exception::class);
$A2->add("Test");
}
public function testErrorOfMedia(): void
{
$A2 = new Sum;
$this->expectException(Exception::class);
$A2->getMedia();
}
}