Ekstremalus programavimas su PHP
Prisiskaičiau daug visokių dalykų apie ekstremalų programavimą. Kaip žinia, ten labai svarbus programų testavimas. Faktiškai viena svarbiausių idėjų yra „pirma parašyk neveikiantį testą, paskui tik pakeisk programą, kad tas testas veiktų“. Šitaip testuojant kiekvieną programos gabaliuką galima užtikrinti kad programa veiks taip kaip buvo planuota ir liks mažiau nesugaudytų vabaliukų.
Ant mano mylimojo Perl yra toks modulis Test::Simple (teko netgi girdėti kad Perlas turi vieną geriausių testavimo įrankų rinkinį – panašus yra lyg tik Javos JUnit). Na Test::Simple idėja yra labai paprasta, tad persirašiau kažką labai panašaus ir PHP kalba:
<?php
# PHPinis Test::Simple ;)
class TestSimple {
var $count = 0;
var $failed = 0;
var $options = array('dont_print_ok' => false);
function TestSimple($options = NULL)
{
$this->options = array_merge($this->options, $options);
}
function ok($code, $failure_message = 'No reason given<br>')
{
$this->count++;
if($code === true) {
if($this->options['dont_print_ok'] === false) {
print("OK $this->count<br>");
}
} else {
$this->failed++;
print("Failed $this->count: $failure_message<br>");
}
return $code;
}
function result()
{
if($this->failed) {
print("Failed $this->failed tests out of $this->count<br>");
} else {
print("All $this->count tests successful<br>");
}
}
}
?>
Naudojimasis šia klase, kaip ir visas testavimas yra labai paprastas. Pats paprasčiausias testavimas (nenaudojant jokios klasės) būtų panašus į šį:
<?php if(2 * 2 == 4) { print "OK"; } else { print "Not OK"; } ?>
Tiek Test::Simple, tiek ši PHPinė klasė šiek tiek palengvina testavimą. Naudojantis šia klase būtų galima parašyti analogišką testą:
<?php $test->ok(2 * 2 == 4); ?>
Apskritai apie testavimą gana neblogai parašyta Test::Tutorial Perliniame modulyje.