crpcut (מבוטא "שטויות לחתוך") הוא המחולק חזק Posix C ++ יחידת Tester. עם crpcut זה קל לכתוב בדיקות שמסגרות יחידת מבחן אחרות לא יכולות לנהל.
דוגמא מבוא:
דוגמא בדיקת חלקים של std :: מחרוזת:
& Nbsp; #include
& Nbsp; #include
מתקן struct apastr // לבדיקות mosts; & nbsp
& Nbsp; {
& Nbsp; apastr (): שניות ("הסכם") {}
& 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 (), 3UL);
& Nbsp;}
& Nbsp; TEST (ב, 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; {
ים [4]; & nbsp;
& Nbsp;}
& Nbsp;}
& Nbsp; int main (int argc, char * argv [])
& Nbsp; {
& Nbsp; לחזור crpcut :: test_case_factory :: run_test (argc, argv);
& Nbsp;}
בדיקות הטבות דומות מלהיות מקובצי בדיקת סוויטות. בדיקת סוויטות יכולות לסמוך על בדיקת סוויטות אחרות, מה שאומר שהבדיקות הכלולות תפעלנה רק אם כל הבדיקות שזה תלוי בסיימו בהצלחה. יכולות להיות מאומתות תוצאות באמצעות מספר פקודות מאקרו טוען. בדיקות יכולות להשתמש בגופים להביע תוכן משותף. ניתן לצפות בדיקות כדי לצאת ידי יוצא מן הכלל, או למות. ציפיות שלא ייענו שגיאות. הודעות על stderr וstdout הן gaught, ונכללו ביומן התוצאה.
מדוע crpcut
והכי חשוב, הוא חייב להיות קל לכתוב בדיקות. עם crpcut, לך להתמקד בהיגיון מבנה מבחן ומבחן שלך, לא על המגבלות שהוטלו על ידי סביבת הבדיקה שלך.
עם crpcut, כל מקרה מבחן פועל בתהליך שלה וספריית העבודה שלו. אם מקרה מבחן נכשל, התהליך מסתיים באופן מיידי, לפני שהיא גורמת לניזק נוסף. משמעות דבר היא כי כל מקרה מבחן מתחיל מדף נקי, אינו מושפע מבדיקות אחרות. זה המידור.
זה גם אומר שחבילת הבדיקות ממשיכה, גם אם מבחן מתרסק. באפשרותך להגדיר לוחות זמנים למקרי מבחן, ואם הזמן המוותר הוא משייכת יתר ברצינות, תהליך מקרה המבחן הוא נהרג. שני אלה מרכיבים את חלק החוסן.
אתה יכול להגדיר את התלות בין מקרי מבחן ובין סוויטות בדיקה, כך שאם בדיקות יסודיות נכשלה, הבדיקות המבוססות על הפונקציונליות הבסיסית לא להיות אפילו לרוץ.
התהליך העיקרי crpcut אין זיכרון דינמי שהוקצה בזמן הוא התחיל תהליך מקרה מבחן, כך שתוכל להפעיל crpcut באמצעות כלי בדיקת זיכרון, כגון valgrind, ואם יש מוקצה בזיכרון בעת תהליך מקרה המבחן מסתיים, אתה יכול להיות סמוך ובטוח שיש לך למצוא דליפת זיכרון בבדיקה שלך.
אם יש לך מעבד מרובה ליבות, זה עשוי להיות מועיל להריץ מספר מקרי מבחן במקביל. crpcut מאפשר את זה.
אם יש קבצים שנותרו בתהליך הבדיקה "עובד ספרייה לאחר תהליך מקרה המבחן סיים, מקרה המבחן נחשב נכשל. ספריית העבודה נותרה ללא פגעה על ידי crpcut, כדי שתוכלו לבחון
מה חדש בהודעה זו :.
- זה תומך הפצות עם גרסאות ישנות של CMake.
מה חדש בגרסת 1.9.1:
- libcrpcut_basic.so נבנה אך לא מותקן
מה חדש בגרסת 1.8.4:
- זה בעיות מכשור valgrind שחרור תיקון באג קטין תיקון , תלות בדיקה ותכונת משך בדיקה פגומה בדוחות XML.
מה חדש בגרסה 1.8.2:
- שיפור תכונת קטין זה הופך את הפרמטר של שורת הפקודה - -timeout-מכפיל = גורם עכשיו גם יש להם השפעה על פסקי הזמן לבניית מתקן והרס.
מה חדש בגרסה 1.8.1:
- שיפור תכונת קטין זה הופך את הפרמטר של שורת הפקודה - -timeout-מכפיל = גורם עכשיו גם יש להם השפעה על פסקי הזמן לבניית מתקן והרס.
מה חדש בגרסת 1.7.2:
- גרסה זו מתקנת באגים קטנים עם מבחן NO_CORE_FILE משנה שהתרחש על לינוקס כאשר / proc / sys / kernel / core_pattern תאר צנרת המזבלה הליבה לתכנית ולא חוסך לקובץ.
מה חדש בגרסת 1.6.1:
- זה הוא תיקון לבאג כי בחלק מקרים שנגרמו XML-פלט פגום על ידי חסר קרוב ברשימת blocked_tests.
מה חדש בגרסת 1.6.0:
- התכונות החדשות הן פרמטר אופציונאלי נוסף לASSERT_THROW () וVERIFY_THROW () אשר בודקת את הערך של אובייקט יוצא דופן גרסה, שתי istream מבוססת של get_parameter () כדי לבחור ערכים עברו משורת הפקודה, ואפשרות לבנות libcrpcut ספרייה סטטית או משותפת כ.
מה חדש בגרסת 1.5.0:
- התכונה החדשה העיקרית היא תיוג של בדיקות. תגיות הן שיטת בחירת מבחן מאונך לזה של testsuites. גם תגיות יכולות לשמש כדי להבחין בין בדיקה שהם קריטיים (לדוגמא רגרסיות) ובדיקה שאינן קריטיים (למשל פונקציונלי עבדו על כרגע.)
תגובות לא נמצא