IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Tests
        Afficher les résultats de tests en HTML avec PHPUnit



Auteur : Alain Sahli
Version : 10/08/2007
Afficher les résultats de tests en HTML avec PHPUnit
La classe :
<?php
require_once 'PHPUnit/Framework.php';

class SimpleTestListener implements PHPUnit_Framework_TestListener
{
    private $error = false;
    private $numberFailed = 0;
    private $numberSuccess = 0;
    private $start = 0;
    
    public function __construct()
    {
        echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
              <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
              <head>
                  <title>Test suite</title>
                     <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
                     <style>
body
{
    font-family: Arial,Verdana;
    font-size: 14px;
}

table
{
    border-top: 1px solid #000;
    border-bottom: 1px solid #000;
    border-left: 1px solid #000;
    border-right: 1px solid #000;
}

.failed
{
    background-color: #FF3730;
}

.success
{
    background-color: #FF952B;
}

.title
{
    text-align: center;
    font-size: 16px;
    border-bottom: 1px solid #000;
}
                     </style>
              </head>
              <body>';
    }
    
    public function addError(PHPUnit_Framework_Test $test, Exception $e, $time)
    {
        $this->error = true;
        $this->numberFailed++;
        echo '<tr><td class="failed">Error while running test '.$test->getName().'</td></tr>';
    }

    public function addFailure(PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time)
    {
        $this->error = true;
        $this->numberFailed++;
        echo '<tr><td class="failed">Test '.$test->getName().' failed.</td></tr>'; 
    }

    public function addIncompleteTest(PHPUnit_Framework_Test $test, Exception $e, $time)
    {
        $this->error = true;
        $this->numberFailed++;
        echo '<tr><td class="failed">Test '.$test->getName().' is incomplete.</td></tr>'; 
    }

    public function addSkippedTest(PHPUnit_Framework_Test $test, Exception $e, $time)
    {
        $this->error = true;
        $this->numberFailed++;
        echo '<tr><td class="failed">Test '.$test->getName().' has been skipped.</td></tr>'; 
    }

    public function startTest(PHPUnit_Framework_Test $test)
    {
        $this->error = false;
    }

    public function endTest(PHPUnit_Framework_Test $test, $time)
    {
        if(!$this->error)
        {
            $this->numberSuccess++;
            echo '<tr><td class="success">Test '.$test->getName().' ended successful!</td></tr>';
        }
    }

    public function startTestSuite(PHPUnit_Framework_TestSuite $suite)
    {
        if($suite->getName() != '')
        {
            $this->start = microtime();
            echo '<table><tr><td class="title">Test '.$suite->getName().'</td></tr>';
        }
    }

    public function endTestSuite(PHPUnit_Framework_TestSuite $suite)
    {
        if($suite->getName() != '')
        {
            $executionTime = microtime() - $this->start;
            echo '<tr><td>'.$this->numberSuccess.' success, '.$this->numberFailed.' failed. Execution time: '.$executionTime.' sec.</td></tr>';
            echo '</table>';
        }
    }
    
    public function __destruct()
    {
        echo '</body></html>';
    }
}
?>
Exemple d'utilisation :
<?php

require_once 'MaClasseDeTest.php';
require_once 'PHPUnit/TextUI/TestRunner.php';
require_once 'SimpleTestListener.php';
 
// Create a test suite
$suite = new PHPUnit_Framework_TestSuite();
$suite->addTestSuite('MaClasseDeTest');
 
// Create a test result and attach a SimpleTestListener
$result = new PHPUnit_Framework_TestResult;
$result->addListener(new SimpleTestListener());
 
// Run the tests.
$suite->run($result);

?>


Consultez les autres pages sources


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.