Μάθε πώς να δοκιμάζεις τις ασκήσεις σου στη C++ στο Exercism
Κάθε άσκηση παρέχει τις δοκιμές μονάδας και μια συνταγή build με CMake. Την υλοποίηση τη γράφεις εσύ. Κάθε αρχείο δοκιμών είναι φτιαγμένο να συνδέεται με την υλοποίησή σου, ώστε να προκύψει ένα εκτελέσιμο κονσόλας που τρέχει τις δοκιμές. Όταν τρέχεις το εκτελέσιμο των δοκιμών, εκτυπώνονται μηνύματα για κάθε δοκιμή που αποτυγχάνει και, όταν αποτύχουν δοκιμές, αναφέρεται μη μηδενική κατάσταση εξόδου.
Σημείωση: Ο κώδικάς σου δοκιμάζεται απέναντι στη σουίτα δοκιμών κάθε φορά που κάνεις build το project σου. Αν ο κώδικάς σου δεν περνάει τη μία ή τις περισσότερες δοκιμές αλλά είναι έγκυρος κώδικας C++, θα μεταγλωττιστεί ούτως ή άλλως.
Το πέρασμα από κάθε άσκηση είναι μια διαδικασία που περιλαμβάνει:
Κάθε άσκηση φέρνει μαζί με τις δοκιμές μονάδας ένα αρχείο CMakeLists.txt. Περιέχει την έτοιμη συνταγή CMake που αναλαμβάνει το build για σένα. Δεν θα χρειαστεί να επεξεργαστείς αυτό το αρχείο. Η συνταγή που σου δίνεται υποθέτει ότι η υλοποίησή σου υπάρχει ως αρχείο κεφαλίδας και ως αρχείο πηγαίου κώδικα με το όνομα της άσκησης.
Για παράδειγμα, η άσκηση bob περιμένει μια υλοποίηση στα bob.h και bob.cpp. Για ασκήσεις που έχουν παύλες στο όνομά τους, υποτίθεται ότι τα αρχεία πηγαίου κώδικα χρησιμοποιούν κάτω παύλες, οπότε η word-count περιμένει τα word_count.h και word_count.cpp. Μπορεί να κρίνεις ότι η υλοποίησή σου είναι αρκετά απλή ώστε να χωράει εξ ολοκλήρου στην κεφαλίδα, οπότε μπορείς να παραλείψεις το αρχείο cpp.
Δημιούργησε τα αρχικά αρχεία της υλοποίησής σου πριν τρέξεις το CMake. Αν δεν έχεις τα αρχεία bob.h και bob.cpp όταν τρέξεις το CMake για την άσκηση bob, τότε το CMake θα βγάλει σφάλμα ότι δεν βρήκε τα αρχεία. Αυτά τα αρχεία μπορούν να είναι κενά, αλλά πρέπει να υπάρχουν.
Με αυτήν τη συνταγή, το CMake μπορεί να δημιουργήσει ένα κατάλληλο project για το περιβάλλον σου τρέχοντας cmake -G με μια κατάλληλη γεννήτρια και τη θέση του καταλόγου της άσκησης. Το CMake θα δημιουργήσει ένα script build κατάλληλο για το λειτουργικό σου σύστημα. Για να κρατήσεις αυτά τα παραγόμενα αρχεία χωριστά από τον πηγαίο κώδικα της άσκησης, συνηθίζεται να δημιουργείς έναν κατάλογο με το όνομα build που θα περιέχει αυτά τα παραγόμενα αρχεία build, καθώς και τον μεταγλωττισμένο κώδικα. Έτσι ο φάκελος της άσκησής σου μένει καθαρός και τακτοποιημένος.
Μόλις το CMake δημιουργήσει το περιβάλλον build, μπορείς να κάνεις build τον κώδικά σου χρησιμοποιώντας την κατάλληλη εντολή για το περιβάλλον σου:
make
make Αν χρησιμοποιείς την εφαρμογή Exercism CLI
Παρακάτω φαίνονται παραδείγματα εκτέλεσης του CMake για διαφορετικά περιβάλλοντα.
Το όνομα της γεννήτριας για το CMake είναι Unix Makefiles.
Υποθέτοντας ότι η τρέχουσα άσκηση είναι η bob και ότι βρισκόμαστε στον φάκελο της άσκησης:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make
Αυτό το παράδειγμα δείχνει τη δημιουργία κενών αρχείων για την υλοποίηση πριν από την εκτέλεση του CMake.
Απλώς γράψε make στον κατάλογο build για να μεταγλωττίσεις τις δοκιμές. Αυτό θα πρέπει να βγάλει σφάλματα μεταγλώττισης. Μόλις διορθωθούν τα σφάλματα, το make θα κάνει build και θα τρέξει τις δοκιμές.
Το Visual Studio υποστηρίζει εγγενώς project CMake, οπότε δεν θα χρειαστεί να εγκαταστήσεις το CMake ξεχωριστά ή να το τρέξεις έξω από το Visual Studio. Ακολούθησε αυτόν τον οδηγό για να στήσεις το project CMake στο Visual Studio.
Το όνομα της γεννήτριας για το CMake είναι Xcode.
Υποθέτοντας ότι η τρέχουσα άσκηση είναι η bob και ότι βρισκόμαστε στον φάκελο της άσκησης:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..
Αυτό το παράδειγμα δημιουργεί τα αρχεία XCode έτσι ώστε να μπορείς να ανοίξεις το project στο XCode. Με το project ανοιχτό στο XCode, μπορεί να χρειαστεί να προσθέσεις άλλον έναν στόχο. Για νέο στόχο, πήγαινε από το μενού στο File -> New -> Target, OS X \ Application \ Command Line Tool -> Next C++ ως γλώσσα και δώσε ένα όνομα για τον στόχο. Τρέξε τον κώδικα χρησιμοποιώντας τον στόχο.
Αν το τερματικό σου πετάει το σφάλμα Xcode x.x not supported, είναι πολύ πιθανό ότι το Xcode δεν είναι εγκατεστημένο στον υπολογιστή σου ή ότι η έκδοσή σου είναι ξεπερασμένη.
Κατέβασε και εγκατέστησε το Xcode από το App Store ή από αυτόν τον σύνδεσμο.
Σφάλματα σαν το The CXX compiler identification is unknown πιθανότατα θα λυθούν αν ακολουθήσεις τις οδηγίες για την εγκατάσταση του GCC ή αν προσθέσεις άλλον έναν στόχο στο Xcode, όπως περιγράφεται στην προηγούμενη παράγραφο.
Το όνομα της γεννήτριας για το CMake είναι Unix Makefiles.
Υποθέτοντας ότι η τρέχουσα άσκηση είναι η bob και ότι βρισκόμαστε στον φάκελο της άσκησης:
$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
Σε αυτό το παράδειγμα, δημιουργούμε κενά αρχεία για την υλοποίηση πριν τρέξουμε το CMake, αλλά δεν δημιουργούμε κενό κατάλογο build.
Αυτό συμβαίνει επειδή το Exercism CLI χρησιμοποιεί το αρχείο .exercism/metadata.json στον ριζικό κατάλογο για να αναλύσει τις περιπτώσεις δοκιμών.
Απλώς γράψε exercism test στον ριζικό κατάλογο για να μεταγλωττίσεις τις δοκιμές. Αυτό θα πρέπει να βγάλει σφάλματα μεταγλώττισης.
Μόλις διορθωθούν τα σφάλματα, τρέχοντας ξανά το exercism test θα γίνει build και εκτέλεση των δοκιμών μέσω του Exercism CLI.