Tesztelés a Factor kurzson

Tanuld meg, hogyan tesztelheted a Factor-feladataidat az Exercism-ön


Amikor letöltesz egy feladatot, az Exercism egy önálló mappaként menti el, például ~/exercism/factor/hello-world. Ez a mappa egy almappát tartalmaz a megoldásoddal, és egy másikat a tesztfuttatóval:

hello-world/
├── hello-world/
│   ├── hello-world.factor        <- your solution
│   └── hello-world-tests.factor  <- the tests
└── exercism-tools/               <- the bundled test runner

Lépj be a mappa gyökerébe a cd paranccsal, majd futtasd a teszteket ezzel:

factor -roots=. -run=exercism-tools <exercise>

A <exercise> helyére írd a feladat nevét (ugyanazt, mint a mappa neve). Például a hello-world teszteléséhez:

cd ~/exercism/factor/hello-world
factor -roots=. -run=exercism-tools hello-world

A parancsot a feladat mappájának gyökeréből futtasd, abból a könyvtárból, amelyben mind a(z) <exercise>, mind az exercism-tools almappa megtalálható.

Ugyanezeket a teszteket futtatja az Exercism a beküldéskor, szóval ha mind sikeresen lefut helyben, készen állsz a beküldésre.

Egyszerre egy teszt

Minden feladatnál kezdetben csak az első teszt aktív. A többi tesztet egy STOP-HERE sor tartja vissza a(z) <exercise>-tests.factor fájlban; a futtató mindent figyelmen kívül hagy, ami ez alatt van.

"year not divisible by 4 in common year" description
{ f } [ 2015 leap-year? ] unit-test

STOP-HERE

"year divisible by 2, not divisible by 4 in common year" description
{ f } [ 1970 leap-year? ] unit-test

Először hozd működésbe az első tesztet, aztán mozgasd le a STOP-HERE sort a következő teszt alá (vagy töröld, hogy az összes engedélyezve legyen), és futtasd újra a teszteket. Haladj így végig a fájlon, amíg minden teszt sikeres nem lesz.

Beküldéskor az Exercism futtatója figyelmen kívül hagyja a STOP-HERE sort, és minden tesztet lefuttat, ezért győződj meg róla, hogy mind sikeres, mielőtt beküldöd.

Ha a tesztek sikeresek

A futtató kiírja az egyes lefuttatott teszteket, majd csendben kilép:

Unit Test: { { f } [ 2015 leap-year? ] }

Ha egy teszt sikertelen

A futtató megmutatja a tesztet, majd az elvárt értéket a kódod által adott értékkel szemben:

Unit Test: { { f } [ 2015 leap-year? ] }
--> test failed!
###FAIL_BEGIN###
leap/leap-tests.factor: 5
=== Expected:
f
=== Got:
t
###FAIL_END###

Itt a teszt a 2015 leap-year? kifejezést futtatta, és f-et várt a vermen, de t-t kapott.

Egy teszt értelmezése

A teszteket a unit-test szóval írjuk le, amely egy tömböt kap, ami leírja, milyen legyen a verem egy quotation lefuttatása után:

{ 3 } [ 1 2 + ] unit-test

Ez lefuttatja a(z) [ 1 2 + ] kifejezést, és ellenőrzi, hogy 3-at hagy-e a vermen. Az üres tömb, { }, azt jelenti, hogy a quotationnek üresen kell hagynia a vermet. A tesztek fölötti opcionális description sor egyszerűen egy olvasható nevet ad a tesztnek.

További részletekért lásd a Factor dokumentációját az egységtesztelésről.