crpcut (προφέρεται "κομμένα χάλια») είναι η με διαμερίσματα Στιβαρή Posix C ++ Μονάδα Tester. Με crpcut είναι εύκολο να γράψω εξετάσεις που άλλα πλαίσια μονάδα-τεστ δεν μπορεί να διαχειριστεί.
Εισαγωγική παράδειγμα:
Ένα παράδειγμα δοκιμές τμήματα του std :: χορδών:
& Nbsp? #include
& Nbsp? #include
& Nbsp? Struct apastr // φωτιστικό για τις δοκιμές mosts
& Nbsp? {
& Nbsp? Apastr (): s ("APA") {}
& Nbsp? Std :: συμβολοσειράς s?
& Nbsp?}?
& Nbsp? TESTSUITE (βασικά)
& Nbsp? {
& Nbsp? TEST (default_constr_and_destr)
& Nbsp? {
& Nbsp? Std :: συμβολοσειράς s?
& Nbsp? ASSERT_TRUE (s.empty ())?
& Nbsp? ASSERT_EQ (s.length (), 0)?
& Nbsp?}
& Nbsp? TEST (constr_from_char_array, apastr,
& Nbsp? DEPENDS_ON (default_constr_and_destr))
& Nbsp? {
& Nbsp? ASSERT_EQ (s.length (), 3 μΐ)?
& Nbsp?}
& Nbsp? TEST (AT, apastr,
& Nbsp? DEPENDS_ON (default_constr_and_destr))
& Nbsp? {
& Nbsp? ASSERT_EQ (s.at (1), «π»)?
& Nbsp?}
& Nbsp?}
& Nbsp? TESTSUITE (σφάλματα, DEPENDS_ON (ALL_TESTS (βασικά)))
& Nbsp? {
& Nbsp? TEST (at_out_of_range, apastr,
& Nbsp? EXPECT_EXCEPTION (std :: out_of_range))
& Nbsp? {
& Nbsp? S.at (4)?
& Nbsp?}
& Nbsp? TEST (index_oper_out_of_range, apastr,
& Nbsp? EXPECT_SIGNAL_DEATH (SIGABRT),
& Nbsp? NO_CORE_FILE)
& Nbsp? {
& Nbsp? S [4]?
& Nbsp?}
& Nbsp?}
& Nbsp? Int main (int argc, char * argv [])
& Nbsp? {
& Nbsp? Επιστρέψει crpcut :: test_case_factory :: run_test (argc, argv)?
& Nbsp?}
Παρόμοιες δοκιμές οφέλη από το να ομαδοποιούνται σε δοκιμή-σουίτες. Test-σουίτες μπορεί να εξαρτάται από άλλα τεστ-σουίτες, που σημαίνει ότι οι δοκιμές που περιέχονται θα εκτελεστεί μόνο αν όλες οι δοκιμές που εξαρτάται έχουν ολοκληρώσει με επιτυχία. Τα αποτελέσματα μπορούν να επικυρωθεί χρησιμοποιώντας μια σειρά από ASSERT μακροεντολές. Οι δοκιμές μπορούν να χρησιμοποιήσουν φωτιστικά για να εκφράσουν το κοινό περιεχόμενο. Μπορεί να αναμένεται δοκιμές για να βγείτε από την εξαίρεση, ή να πεθάνουν. Προσδοκίες που δεν πληρούνται οι σφάλματα. Μηνύματα σχετικά με stderr και stdout είναι gaught, και περιλαμβάνεται στο αρχείο καταγραφής αποτέλεσμα.
Γιατί crpcut
Το πιο σημαντικό, θα πρέπει να είναι εύκολο να γράψω εξετάσεις. Με crpcut, θα επικεντρωθεί στην κατασκευή και δοκιμή λογική σας, όχι στα όρια που επιβάλλονται από το περιβάλλον της δοκιμής σας.
Με crpcut, κάθε δοκιμή εκτελείται με τη δική της διαδικασία και τη δική κατάλογο εργασίας του. Αν ένα τεστ αποτύχει, η διαδικασία τερματίζεται αμέσως, πριν κάνει περαιτέρω ζημιά. Αυτό σημαίνει ότι κάθε δοκιμή ξεκινά από μια καθαρή πλάκα, δεν επηρεάζεται από άλλες δοκιμές. Αυτή είναι η διαμερισματοποίηση.
Σημαίνει, επίσης, ότι η δοκιμή σουίτα συνεχίζεται, ακόμη και αν μια δοκιμή διακόπτεται. Μπορείτε να ρυθμίσετε τις προθεσμίες για τις περιπτώσεις δοκιμών, και αν ο επιτρεπόμενος χρόνος είναι σοβαρά ακάλυπτος, η διαδικασία δοκιμή σκοτώνεται. Αυτά τα δύο αποτελούν το μέρος ευρωστία.
Μπορείτε να ορίσετε τις εξαρτήσεις μεταξύ των περιπτώσεων δοκιμής και μεταξύ σουίτες δοκιμή, έτσι ώστε αν ένα θεμελιώδες δοκιμές αποτύχει, οι δοκιμές που βασίζονται στη θεμελιώδη λειτουργία δεν θα ακόμη και να τρέξει.
Η crpcut κύρια διαδικασία δεν έχει καμία δυναμική μνήμη που διατίθενται κατά τη στιγμή της διαδικασίας δοκιμή έχει ξεκινήσει, ώστε να μπορείτε να εκτελέσετε crpcut χρησιμοποιώντας ένα εργαλείο τεστ μνήμης, όπως valgrind, και αν υπάρχει μνήμης που εκχωρείται όταν η διαδικασία δοκιμή τερματίζεται, μπορείτε μπορούν να είναι βέβαιοι ότι έχετε βρει μια διαρροή μνήμης στη δοκιμή σας.
Εάν έχετε ένα multi-core CPU, μπορεί να είναι ευεργετικό να εκτελέσετε πολλές περιπτώσεις δοκιμών παράλληλα. crpcut επιτρέπει αυτό.
Εάν υπάρχουν αρχεία που έχουν απομείνει στη διαδικασία δοκιμής »κατάλογο εργασίας μετά τη διαδικασία δοκιμή έχει περατωθεί, η δοκιμή θεωρείται ότι έχει αποτύχει. Ο κατάλογος εργασίας μείνει ανέγγιχτη από crpcut, για να εξετάσει
Τι είναι καινούργιο σε αυτή την έκδοση:.
- Αυτή η έκδοση υποστηρίζει διανομές με τις παλιότερες εκδόσεις του CMake.
Τι είναι καινούργιο στην έκδοση 1.9.1:
- libcrpcut_basic.so χτίστηκε, αλλά δεν έχει εγκατασταθεί
Τι είναι καινούργιο στην έκδοση 1.8.4:
- Αυτή είναι μια μικρή bugfix απελευθέρωση διόρθωση των προβλημάτων οργάνων valgrind , εξαρτήσεις δοκιμής και ελαττωματικό διάρκεια δοκιμής χαρακτηριστικό στις εκθέσεις XML.
Τι είναι καινούργιο στην έκδοση 1.8.2:
- Η μικρή αυτή αύξηση χαρακτηριστικό καθιστά την παράμετρο γραμμής εντολών - -timeout-πολλαπλασιαστής = συντελεστής τώρα έχουν επίσης επίδραση στις χρονικά όρια για την κατασκευή φωτιστικό και την καταστροφή.
Τι είναι καινούργιο στην έκδοση 1.8.1:
- Η μικρή αυτή αύξηση χαρακτηριστικό καθιστά την παράμετρο γραμμής εντολών - -timeout-πολλαπλασιαστής = συντελεστής τώρα έχουν επίσης επίδραση στις χρονικά όρια για την κατασκευή φωτιστικό και την καταστροφή.
Τι είναι καινούργιο στην έκδοση 1.7.2:
- Αυτή η έκδοση διορθώνει ένα μικρό σφάλμα με τη δοκιμή NO_CORE_FILE τροποποιητή που συνέβη στο Linux, όταν / proc / sys / kernel / core_pattern περιγράφεται σωληνώσεων στη χωματερή πυρήνα σε ένα πρόγραμμα παρά τις αποταμιεύσεις τους σε ένα αρχείο.
Τι είναι καινούργιο στην έκδοση 1.6.1:
- Αυτό είναι ένα patch για ένα σφάλμα που σε ορισμένες περιπτώσεις προκάλεσε δυσπλασία XML-εκροών κατά λείπει ένα κοντά στον κατάλογο blocked_tests.
Τι είναι καινούργιο στην έκδοση 1.6.0:
- Τα νέα χαρακτηριστικά είναι μια πρόσθετη προαιρετική παράμετρο για ASSERT_THROW () και VERIFY_THROW (), η οποία ελέγχει την αξία ενός αντικειμένου εξαίρεση, δύο IStream based έκδοση του get_parameter () για να επιλέξετε τιμές πέρασε από τη γραμμή εντολών, καθώς και μια επιλογή για να οικοδομήσουμε libcrpcut ως στατικά ή κοινή βιβλιοθήκη.
Τι είναι καινούργιο στην έκδοση 1.5.0:
- Το κύριο νέο χαρακτηριστικό είναι το tag δοκιμών. Οι ετικέτες είναι μια μέθοδος επιλογής δοκιμή ορθογώνια με εκείνη των testsuites. Οι ετικέτες μπορούν επίσης να χρησιμοποιηθούν για τη διάκριση μεταξύ των τεστ που είναι κρίσιμης σημασίας (π.χ. παλινδρομήσεις) και των δοκιμών που είναι μη-κρίσιμες (π.χ. η λειτουργικότητα του παρόντος εργαστεί.)
- Πειραματική υποστήριξη είναι επίσης διαθέσιμη για τη διακόσμηση εκθέσεις δοκιμών, για παράδειγμα, ANSI-χρώμα αποδράσεις.
Τα σχόλια δεν βρέθηκε