Jelen posztban a NetBeans és a PHPUnit kapcsolatáról lesz szó. Régóta ki szerettem volna próbálni, hogy mit is tud az egyik kedvenc IDE-m kezdeni az egységtesztelésből már ismert Code Coverage-el. Pár hete le is töltöttem a 7.0-s változatot, de mire odáig jutottam hogy ténylegesen rászánjam azt a 2x10 percet a dologra, már ki is jött a 7.0.1-es (Aug1.), így már azon teszteltem (6.9-es verziótól már tartalmazza ezt a feature-t).
Kezdetben van nekünk egy "User" osztályunk két metódussal. A fontos most a "setName()", amely egy paramétert vár ("name), ami ha nem "string" típusú vagy ha az, de a hossza kisebb, mint három, akkor kivételt dob a függvény. Előbbi esetben a kivétel "InvalidArgumentException", míg utóbbiban "LengthException" típusú. Amennyiben nincs kivétel, a "name" attribútum értékül kapja a paraméterként adottat.
![](http://3.bp.blogspot.com/-Ex4mm7ZQwIo/Tk0awGvtYSI/AAAAAAAAATo/e46hU9WBbvs/s400/nbut1.png) |
User osztály |
Következő lépés, hogy létrehozzunk egy tesztet az említett osztály "setName" metódusára. Az alábbi módon könnyíthetjük meg a munkánkat:
![](http://3.bp.blogspot.com/-JumnolerKPI/Tk0a0xXjQhI/AAAAAAAAATs/g_yfiUvKbQo/s400/nbut2.png) |
Unit test generálás |
Elkészült a tesztelő osztályunk mindenféle földi jóval. A metódusok helyesen "incomple" jelzést kaptak.
![](http://2.bp.blogspot.com/-3bToSyN3764/Tk0a1X7XMUI/AAAAAAAAATw/FUX4husubVA/s400/nbut3.png) |
UserTest osztály |
Visszamegyünk a "User" osztályunkra, ahol meg szeretnénk nézni, hogy az apró kódunk hány százalékát fedtük le eddig egységteszttel. Kemény 7.69%-on vagyunk, amit teljes egészében a konstruktor tesz ki. Ahogy a képen is láthatjuk a konstruktor zöld színű, míg az eddig le nem fedett részek pirosak.
![](http://4.bp.blogspot.com/-oZN0jI-hDOQ/Tk0a12VG4PI/AAAAAAAAAT0/y-dYWZhOszY/s400/nbut4.png) |
CodeCoverage 7.69% |
Nekünk ez a lefedettség kevés (A 7.69% valóban kevés lehet, de halkan megemlíteném, hogy a 100%-os lefedettséget senki se szeresse elérni. Külön cikket megér, van is róla pár angol nyelvű, érdemes böngészni), így írunk egy tesztet a "setName" metódusra. Ebben a tesztben egy nem "string" típusú paramétert adunk át a függvénynek, amire válaszul InvalidArgumentException-t várunk (expected annotáció a kommentben).
![](http://2.bp.blogspot.com/-n4SN1eqCX1k/Tk0a2OwUniI/AAAAAAAAAT4/pdWA4POvl3s/s400/nbut5.png) |
testSetName |
Miután kész a függvényünk, visszatérve a "User" osztályunkhoz láthatjuk, hogy az említett kivételt le is fedtük a tesztünkel. 30.77% ami a mai napra nekünk elég is, hiszen nem szeretnénk túlzásba vinni a kódolást a 28° melegben ezen a szép napon.
![](http://1.bp.blogspot.com/-iMVqJxkPHpE/Tk0a27oNNbI/AAAAAAAAAT8/VkMVMoQHb7w/s400/nbut6.png) |
CodeCoverage 30.77% |
No comments:
Post a Comment