Blog webdeveloperski Patryk yarpo Jar

Pokrycie kodu – PHP_Unit

Autor wiadomości Listopad 7, 2010

Niedawno pokazałem jak zainstalować PHP_Unit, oraz jak wykonać z pomocą tego frameworka testy jednostkowe. W tym artykule postaram się pokazać, jak wykorzystać rozszerzenie Xdebug do generowania przejrzystych raportów pokazujących pokrycie kodu testami jednostkowymi.

Czego potrzebujesz?

Quick start

Stwórz plik `MyClass.php' i umieść w nim taki kod:

<?php
class MyClass
{
    public function add($a, $b)
    {
        return $a + $b;
    }

    public function multiply($a, $b)
    {
        return $a * $b;
    }
}

W tym samym katalogu stwórz plik `MyClassTest.php' umieść w nim taki kod:

<?php
require_once 'PHPUnit/Framework.php';
require_once 'MyClass.php';

class MyClassTest extends PHPUnit_Framework_TestCase
{
    public function testAdd()
    {
        $o = new MyClass();
        $res = $o->add(2, 4);
        $this->assertEquals($res, 2+4);
    }
}

Odpal wiersz poleceń, przejdź do katalogu z tymi plikami:

D:\programy\console\bin\debug>f:
F:\>cd vhosts\localhost

(u Ciebie oczywiście może być ina ścieżka)

Wykonaj polecenie:

phpunit --coverage-html MyClassTestReport MyClassTest

Powinny się pojawić takie komunikaty:

PHPUnit 3.4.12 by Sebastian Bergmann.
.
Time: 1 second, Memory: 5.75Mb
OK (1 test, 1 assertion)
Generating code coverage report, this may take a moment.

Zajrzyj teraz do katalogu `MyClassTestReport". Otwórz plik `index.html'. Powinieneś zobaczyć coś podobnego:

Pokrycie kodu z PHP_Unit + XDebugKliknij na link "MyClass.php". Powienieneś zobaczyć mniej więcej coś takiego:

Dokładny raport z pokrycia kodu

Co tu widzimy?

Na górze widać tabelkę z procentowymi wynikami działania testu.

Poniżej widzimy kod testowanej klasy. Na zielono zaznaczone są linie, które były testowane w trakcie testów. Na szaro te, do których nie da się dojść nigdy. Na pomarańczowo zaznaczone są linie, które podczas testów nie były ani razu "odwiedzone". Dodatkowo po lewej stronie dwukropka widać ile razy odwiedzono daną linię.

Co dalej

Komentarze (0) Trackbacks (0)

Brak komentarzy.


Leave a comment

 

Brak trackbacków.