Tanuld meg, hogyan tesztelheted a Fortran-feladataidat az Exercism-ön
Minden feladathoz tartoznak az egységtesztek és egy CMake-fordítási recept. A megvalósítást neked kell elkészítened. Az egyes tesztfájlok arra készültek, hogy a megvalósításodhoz linkelve egy konzolos futtatható programot hozzanak létre, amely lefuttatja a teszteket. A tesztprogram futtatásakor minden sikertelen tesztnél üzenetet ír ki, és ha a tesztek elbuknak, nullától eltérő kilépési státusszal tér vissza.
A tesztfájl neve <exercise>_test.f90 lesz, tehát a „Bob” feladat esetében a teszteket tartalmazó fájl a bob_test.f90. Minden teszt előtt egy komment írja le a tesztet, majd maga a teszt következik, amely call assert_equal-lel kezdődik, például.
! Test 16: non-letters with question
call assert_equal("Sure.", hey(":) ?"), "non-letters with question")
Egy teszt letiltásához egyszerűen kommenteld ki egy '!'-lel, például.
! Test 16: non-letters with question
! call assert_equal("Sure.", hey(":) ?"), "non-letters with question")
Az egyes feladatok végigvitele a következő folyamatból áll:
Az egyes feladatok az egységtesztekkel együtt hoznak egy CMakeLists.txt fájlt is. Ez tartalmazza a kész CMake-receptet, amely elvégzi helyetted a buildet. Ezt a fájlt elvileg nem kell szerkesztened. A kapott recept feltételezi, hogy a megvalósításod egy, a feladatról elnevezett forrásfájlban található.
Például a „Bob” feladat egy bob.f90 fájlban lévő megvalósítást vár.
A kezdeti megvalósításfájljaidat a CMake futtatása előtt hozd létre.
Ha a „Bob” feladat CMake-futtatásakor nem létezik a bob.f90 fájl, a CMake hibát jelez a nem található fájlokról.
Ezek a fájlok lehetnek üresek, de létezniük kell.
Ezzel a recepttel a CMake egy, a környezetednek megfelelő projektet hoz létre, ha lefuttatod a cmake -G parancsot egy megfelelő generátorral és a feladat könyvtárának elérési útjával. A CMake az operációs rendszeredhez illő build-szkriptet hoz létre. Ahhoz, hogy ezek a generált fájlok elkülönüljenek a feladat forráskódjától, gyakori, hogy létrehozol egy build nevű könyvtárat, amelyben a generált buildfájlok és a lefordított kód is helyet kap.
Így a feladat mappája rendezett és áttekinthető marad.
**Megjegyzés: amikor először meghívod a cmake-et, a testlib automatikusan letöltődik. A testlib szükséges az egységtesztek működéséhez.
Mivel minden feladatnál le fogod futtatni a CMake-et a buildutasítások létrehozásához, érdemes lehet egy bash-szkriptet (Linux/MacOS) vagy batch-fájlt (Windows) készítened ehhez a parancshoz.
Miután a CMake létrehozta a buildkörnyezetet, a kódodat a környezetedhez illő paranccsal tudod lefordítani:
make
mingw32-make.exe
nmake.exe
Az alábbiakban példákat látsz a CMake futtatására különböző környezetekben.
A CMake generátorának neve Unix Makefiles.
Feltéve, hogy az aktuális feladat a bob, és a feladat mappájában vagyunk:
$ touch bob.f90
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make
Ez a példa azt mutatja, hogyan hozzunk létre üres fájlokat a megvalósításhoz a CMake futtatása előtt.
Egyszerűen írd be a make parancsot a build könyvtárban a tesztek lefordításához. Ez fordítási időben jelentkező hibákat fog eredményezni. Miután kijavítottad a hibákat, futtasd újra a make-et. Amikor minden buildhiba megszűnt, futtasd a teszteket:
$ ctest -V
A CMake generátorának neve Visual Studio 15. Ugyanez a generátor a Visual Studio 2017 minden IDE-kiadását támogatja: Community, Professional és Enterprise. Feltéve, hogy az aktuális feladat a bob, és a feladat mappájában vagyunk:
> copy nul: bob.f90
> mkdir build
> cd build
> cmake -G "Visual Studio 15" ..
Ez a példa azt mutatja, hogyan hozzunk létre üres fájlokat a megvalósításhoz a CMake futtatása előtt.
A CMake generátorának neve MinGW Makefiles. Feltéve, hogy az aktuális feladat a bob, és a feladat mappájában vagyunk:
> copy nul: bob.f90
> mkdir build
> cd build
> cmake -G "MinGW Makefiles" ..
Ez a példa azt mutatja, hogyan hozzunk létre üres fájlokat a megvalósításhoz a CMake futtatása előtt.
Egyszerűen írd be a make parancsot a build könyvtárban a tesztek lefordításához. Ez fordítási időben jelentkező hibákat fog eredményezni. Miután kijavítottad a hibákat, futtasd újra a make-et. Amikor minden buildhiba megszűnt, futtasd a teszteket:
A CMake generátorának neve Xcode.
Feltéve, hogy az aktuális feladat a bob, és a feladat mappájában vagyunk:
$ touch bob.f90
$ mkdir build
$ cd build
$ cmake -G Xcode ..
Ez a példa azt mutatja, hogyan hozzunk létre üres fájlokat a megvalósításhoz a CMake futtatása előtt.
Egyszerűen írd be a make parancsot a build könyvtárban a tesztek lefordításához. Ez fordítási időben jelentkező hibákat fog eredményezni. Miután kijavítottad a hibákat, futtasd újra a make-et. Amikor minden buildhiba megszűnt, futtasd a teszteket:
$ ctest -V
A tesztek egy testlib nevű kis könyvtártól függnek, amelyet a githubról töltenek le, amikor a buildet először konfigurálják cmake-mel.
Ha a letöltés nem sikerül, kézzel is elvégezhető, például.
mkdir testlib
cd testlib
wget https://raw.githubusercontent.com/exercism/fortran/master/testlib/CMakeLists.txt
wget https://raw.githubusercontent.com/exercism/fortran/master/testlib/TesterMain.f90