Einfache Tests durchführen

Beispiel ausführen

Statische Variablen in Funktionen können sehr nützlich sein. Das ist ein Beispiel wie man einfach eine Reihe von Bedingungen abprüfen kann. Das ist ähnlich zur Verwendung von assert().

Wer per Suchmaschine hier gelandet ist und etwas anderes erwartet hat, hier geht es zum richtigen Simpletest Framework für Unit-Tests.

<?php
/**
* Einfache Funktion für Tests
*/



/**
* Aufruf ohne Parameter: Liste der bisher gesammelte Fehlermeldungen wird als String zurückgegeben
* Aufruf mit einem Parameter: Übergebener String wird als Zwischenüberschrift gesetzt
* Aufruf mit zwei Parametern: ein boolscher Wert und ein Fehlertext der bei false gezeigt wird
* Aufruf mit drei Parametern: der dritte Parameter sorgt dafür, dass nur jeweils der erste Fehler angezeigt wird

*/

function SimpleTest()
{
     static 
$s '';
     static 
$headline '';
     static 
$groupby = array();
     
     
// Snippets zur Gestaltung der Anzeige ...
    
$bullet ' &mdash; ';
    
$nl '<br />';
     
$tpl_headline '<h4>[%s]</h4>';
    
$tpl_msg = <<< EOT
<div>
<h1>Es sind Fehler aufgetreten</h1>
%s
</div>
EOT;
    
    
    
$n func_num_args();
    
$group false;
    switch(
$n):

    case 
3:
        
$group func_get_arg(2);
        
// fall through intended ...
    
case 2:
        
$bool func_get_arg(0);
        
$msg  func_get_arg(1);
    break;

    case 
1:
        
// Zwischenüberschrift ...
        
$headline func_get_arg(0);
        return 
true;
    break;

    case 
0:
        
$tmp $s;
         
$s '';
         
$headline '';
         
         if (!empty(
$tmp)){
             
$msg sprintf($tpl_msg$tmp);
         }else{
             
$msg '';    
         }
        return 
$msg;
    break;

    default:
        die (
'wrong number of arguments');
    break;

    endswitch;

     if (!
$bool && ($group === false || !isset($groupby[$group]))){
         if (!empty(
$headline)){
             
$s .= sprintf($tpl_headline$headline);
             
$headline '';
         }

         
$s .= $bullet.$msg.$nl;
        if (
$group !== false){
                
$groupby[$group] = true
        }
     }

}


    
SimpleTest('Testreihe A');
    
SimpleTest(2*== 9'Mmmmh, 2*3 ist doch nicht 9?');

    
SimpleTest('Testreihe B');
    
    
// der dritte Parameter sorgt dafür, dass immer nur der erste auftretende Fehler
    // angezeigt wird.
    
    
SimpleTest(file_exists('gibtesabernicht.txt'), 'Datei nicht vorhanden'1);
    
SimpleTest(is_readable('gibtesabernicht.txt'), 'Datei nicht lesbar'1);
    
SimpleTest(is_writeable('gibtesabernicht.txt'), 'Datei nicht beschreibbar'1);

    
SimpleTest(2'Eins soll immer kleiner als zwei sein');
    
SimpleTest(extension_loaded('gd'), 'Die GD-Lib ist nicht verfügbar');

    echo 
SimpleTest();


?>

Benutzte Funktionen


Hinweise zum DatenschutzImpressum © 2005-2008 S. Eickhoff