Tanuld meg, hogyan teszteld a C++ feladataidat az Exercism-ön
Minden feladat biztosítja az unit teszteket és egy CMake build-receptet. A megvalósítást neked kell megírnod. Minden tesztfájl arra szolgál, hogy a megvalósításodhoz linkelve egy konzolos futtatható fájlt hozzon létre, amely lefuttatja a teszteket. A teszt futtatható fájljának futtatása minden sikertelen teszthez üzenetet ír ki, és nullától eltérő kilépési státuszt jelez, ha a tesztek elbuknak.
Megjegyzés: A kódodat minden alkalommal leteszteljük a tesztegyüttessel, amikor lefordítod a projektedet. Ha a kódod nem megy át egy vagy több teszten, de érvényes C++ kód, akkor is le fog fordulni.
Az egyes feladatok kidolgozása a következő lépésekből áll:
Minden feladat hoz magával egy CMakeLists.txt fájlt az unit tesztekkel együtt. Ez tartalmazza az előre elkészített CMake-receptet, amely elvégzi helyetted a buildet. Ezt a fájlt valószínűleg nem kell szerkesztened. A mellékelt recept azt feltételezi, hogy a megvalósításod egy fejléc- és egy forrásfájlból áll, amelyek a feladatról kapták a nevüket.
Például a bob feladat a megvalósítást a bob.h és bob.cpp fájlban várja. A nevükben kötőjelet tartalmazó feladatoknál a forrásfájlokról feltételezzük, hogy alulvonást használnak, így a word-count a word_count.h és word_count.cpp fájlt várja. Dönthetsz úgy, hogy a megvalósításod elég egyszerű ahhoz, hogy teljes egészében a fejlécben legyen, ilyenkor elhagyhatod a cpp fájlt.
A kezdeti megvalósításfájljaidat a CMake futtatása előtt hozd létre. Ha a bob feladatnál a CMake futtatásakor nem léteznek a bob.h és bob.cpp fájlok, a CMake hibát jelez a nem található fájlok miatt. Ezek a fájlok lehetnek üresek, de létezniük kell.
Ezzel a recepttel a CMake a környezetedhez illő projektet tud generálni, 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 generál. Hogy a generált fájlok elkülönüljenek a feladat forráskódjától, gyakori, hogy létrehozunk egy build nevű könyvtárat, amelyben a generált build fájlok és a lefordított kód is helyet kapnak. Így a feladat mappája rendezett és áttekinthető marad.
Miután a CMake létrehozta a build környezetet, a kódodat a környezetedhez illő paranccsal fordíthatod le:
make
make Ha az Exercism CLI alkalmazást használod
Az alábbiakban példákat látsz arra, hogyan futtathatod a CMake-et 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.{h,cpp}
$ 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. Ennek fordítási idejű hibákat kell eredményeznie. Amint kijavítottad a hibákat, a make lefordítja és lefuttatja a teszteket.
A Visual Studio natívan támogatja a CMake-projekteket, így nem kell külön telepítened a CMake-et, sem a Visual Studión kívül futtatnod. Kövesd ezt az útmutatót, hogy beállítsd a CMake-projektet a Visual Studióban.
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.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..
Ez a példa legenerálja az XCode fájlokat, hogy megnyithasd a projektet az XCode-ban. Előfordulhat, hogy a projekt XCode-ban való megnyitása után hozzá kell adnod egy új célt. Új célhoz válaszd a menüből a File -> New -> Target pontot, OS X \ Application \ Command Line Tool -> Next, majd nyelvként a C++-t, és adj meg egy célnevet. A kódot a cél segítségével futtasd.
Ha a terminálod Xcode x.x not supported hibát dob, nagy valószínűséggel nincs telepítve az Xcode a gépedre, vagy a verziód elavult.
Töltsd le és telepítsd az Xcode-ot az App Store-ból vagy ezen a linken keresztül.
A The CXX compiler identification is unknown üzenethez hasonló hibák valószínűleg megoldódnak, ha követed a GCC telepítésére vonatkozó utasításokat, vagy a fenti bekezdés szerint hozzáadsz egy új célt az Xcode-ban.
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.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
Ebben a példában valóban létrehozzuk az üres fájlokat a megvalósításhoz a CMake futtatása előtt, de nem hozunk létre üres build könyvtárat.
Ennek az az oka, hogy az Exercism CLI a gyökérkönyvtárban lévő .exercism/metadata.json fájlt használja a tesztesetek feldolgozásához.
Egyszerűen írd be az exercism test parancsot a gyökérkönyvtárban a tesztek lefordításához. Ennek fordítási idejű hibákat kell eredményeznie.
Amint kijavítottad a hibákat, az exercism test újbóli lefuttatása lefordítja és végrehajtja a teszteket az Exercism CLI segítségével.