Scopri come testare i tuoi esercizi C++ su Exercism
Ogni esercizio fornisce i test unitari e una ricetta di build per CMake. L'implementazione la scrivi tu.
Ogni file di test è pensato per essere collegato all'implementazione, così da produrre un eseguibile da console che esegue i test. Eseguendo l'eseguibile dei test vengono stampati messaggi per ogni test che fallisce e viene riportato uno stato di uscita diverso da zero quando i test falliscono.
Nota: il codice viene testato con la suite di test ogni volta che compili il progetto. Se il codice non supera uno o più test ma è comunque codice C++ valido, verrà compilato lo stesso.
Lavorare su ogni esercizio è un processo fatto di:
Ogni esercizio porta con sé un file CMakeLists.txt insieme ai test unitari. Contiene la ricetta CMake preconfezionata che gestisce la build. Non dovresti avere bisogno di modificare questo file. La ricetta fornita presuppone che l'implementazione esista sotto forma di un file header e di un file sorgente che prendono il nome dall'esercizio.
Per esempio, l'esercizio bob si aspetta un'implementazione in bob.h e bob.cpp. Per gli esercizi con un trattino nel nome, si presume che i file sorgente usino gli underscore, quindi word-count si aspetta word_count.h e word_count.cpp. Puoi decidere che l'implementazione sia abbastanza semplice da stare interamente nell'header, nel qual caso puoi omettere il file cpp.
Crea i file di implementazione iniziali prima di eseguire CMake. Se non hai i file bob.h e bob.cpp quando esegui CMake per l'esercizio bob, CMake genererà un errore perché non trova i file. Questi file possono essere vuoti, ma devono esistere.
Con questa ricetta, CMake può generare un progetto adatto al tuo ambiente eseguendo cmake -G con un generatore adeguato e il percorso della cartella dell'esercizio. CMake genererà uno script di build appropriato per il tuo sistema operativo. Per tenere i file generati separati dal codice sorgente dell'esercizio, è comune creare una cartella chiamata build che contenga sia questi file di build generati sia il codice compilato. Così la cartella dell'esercizio resta ordinata e pulita.
Una volta che CMake ha creato l'ambiente di build, puoi compilare il codice con il comando appropriato per il tuo ambiente:
make
make se usi l'app CLI di Exercism
Qui sotto trovi alcuni esempi di esecuzione di CMake in ambienti diversi.
Il nome del generatore per CMake è Unix Makefiles.
Supponendo che l'esercizio corrente sia bob e che ci troviamo nella cartella dell'esercizio:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make
Questo esempio mostra come creare file vuoti per l'implementazione prima di eseguire CMake.
Digita semplicemente make nella cartella di build per compilare i test. Dovrebbero comparire errori di compilazione. Una volta risolti, make compilerà ed eseguirà i test.
Visual Studio supporta nativamente i progetti CMake, quindi non dovresti aver bisogno di installare CMake separatamente né di eseguirlo fuori da Visual Studio. Segui questa guida per configurare il progetto CMake in Visual Studio.
Il nome del generatore per CMake è Xcode.
Supponendo che l'esercizio corrente sia bob e che ci troviamo nella cartella dell'esercizio:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..
Questo esempio genera i file XCode in modo che tu possa aprire il progetto in XCode. Con il progetto aperto in XCode potresti dover aggiungere un altro target. Per aggiungere un nuovo target, vai su File -> New -> Target dal menu, OS X \ Application \ Command Line Tool, poi Next, scegli C++ come linguaggio e indica un nome per il target. Esegui il codice usando il target.
Se il terminale restituisce un errore Xcode x.x not supported, è molto probabile che Xcode non sia installato sul tuo computer o che la tua versione sia obsoleta.
Scarica e installa Xcode dall'App Store oppure da questo link.
Errori simili a The CXX compiler identification is unknown si risolvono probabilmente seguendo le istruzioni per installare GCC oppure aggiungendo un altro target in Xcode come descritto nel paragrafo precedente.
Il nome del generatore per CMake è Unix Makefiles.
Supponendo che l'esercizio corrente sia bob e che ci troviamo nella cartella dell'esercizio:
$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
In questo esempio creiamo effettivamente dei file vuoti per l'implementazione prima di eseguire CMake, ma non creiamo una cartella di build vuota.
Il motivo è che la CLI di Exercism usa il file .exercism/metadata.json nella cartella principale per analizzare i casi di test.
Digita semplicemente exercism test nella cartella principale per compilare i test. Dovrebbero comparire errori di compilazione.
Una volta risolti, eseguendo di nuovo exercism test la CLI di Exercism compilerà ed eseguirà i test.