سؤال

ما هو أفضل وسيلة لتنفيذ تأكيدات استخدام التقدم 4GL أو WebSpeed؟

هل كانت مفيدة؟

المحلول

وبعد بعض النظر هنا هو بلدي حل لهذه المشكلة. أنها تعمل على أساس افتراض أن propath بيئة تطوير يختلف من بيئات الاختبار والإنتاج ورمز دائما تجميعها إعادة للاختبار أو إنتاج الاستخدام:

&IF PROPATH MATCHES '*development*' &THEN 
&SCOPED-DEFINE ASSERTION   {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} ~
{11} {12} {13} {14} {15} {16} {17} {18} {19} {20} ~
{21} {22} {23} {24} {25} {26} {27} {28} {29} {30} ~
{31} {32} {33} {34} {35} {36} {37} {38} {39} {40} ~
{41} {42} {43} {44} {45} {46} {47} {48} {49} {50} ~
{51} {52} {53} {54} {55} {56} {57} {58} {59} {60} ~
{61} {62} {63} {64} {65} {66} {67} {68} {69} {70} ~
{71} {72} {73} {74} {75} {76} {77} {78} {79} {80} 


 IF NOT ({&ASSERTION}) THEN 
     MESSAGE "Failed assertion {&ASSERTION} in" PROGRAM-NAME(1).

 IF ({&ASSERTION}) = ? THEN 
     MESSAGE "Unknown value as a result of assertion {&ASSERTION} in" 
              PROGRAM-NAME(1).

&ENDIF

تم تصميم رمز لتجنب أي آثار جانبية وتعمل على قدم المساواة بشكل جيد في أي بيئة تنفيذ (GUI أو تشوى، WebSpeed، AppServer، دفعة وهلم جرا).

1) حفظ الكود كما ملف يسمى "ASSERT" (بدون أي ملحق).

2) ضع الملف إلى دليل المشار إليه بواسطة PROPATH.

و3) استخدام عينة:

{assert valid-handle(hProc)}
{assert i > 0 and i <= 100}
{assert cExtra begins ‘opt’}  /* note the single quotes */
{assert dtEnd > = dtStart}

وأما الاختلاف فإنه من الممكن تجنب الاعتماد على propath تماما من خلال وجود مجرد فارغة تضمين ملف في الاختبار والإنتاج والبيئة، فإن النسخة تنمية تصبح فقط:

&SCOPED-DEFINE ASSERTION   {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} ~
{11} {12} {13} {14} {15} {16} {17} {18} {19} {20} ~
{21} {22} {23} {24} {25} {26} {27} {28} {29} {30} ~
{31} {32} {33} {34} {35} {36} {37} {38} {39} {40} ~
{41} {42} {43} {44} {45} {46} {47} {48} {49} {50} ~
{51} {52} {53} {54} {55} {56} {57} {58} {59} {60} ~
{61} {62} {63} {64} {65} {66} {67} {68} {69} {70} ~
{71} {72} {73} {74} {75} {76} {77} {78} {79} {80} 


 IF NOT ({&ASSERTION}) THEN 
     MESSAGE "Failed assertion {&ASSERTION} in" PROGRAM-NAME(1).

 IF ({&ASSERTION}) = ? THEN 
     MESSAGE "Unknown value as a result of assertion {&ASSERTION} in" 
              PROGRAM-NAME(1).

وهناك معلومات اضافية لإضافة ماكرو لصناعة السيارات في النص إلى محرر لديك خيار من شأنها توسيع تلقائيا إلى {ASSERT}.

نصائح أخرى

ومنذ التقدم لم يكن لديك التعامل الوطنية لتأكيدات، ولكن أفضل ما توصلت إليه هو:

IF NOT <assertion> THEN
RUN assertionFailed.p.

وassertionFailed.p يمكن أن البريد الإلكتروني مبرمج، أو تسجيل للشروط وأيضا الخروج بأمان.

وبالنظر إلى أن تأكيدات يتم حذف عموما من رمز النهائية كنت تشير الى الطريق المعالج. قد تفعل شيئا مثل ما يلي إعداده كما تشمل اثنين من الملفات. عند تجميع لإنتاج ضمان debugalert.i فارغ. assert.i يمكن أن تعدل على القيام بكل ما تريد رسالة، ووقف، والبريد الإلكتروني وما إلى ذلك ...

لإعداد تأكيد كنت فقط اتبع شكل {assert.i والشرط =}


/ * assert.i * / {debugalert.i}

& إذا كان معرفا (DEBUGALERT) <> 0 & THEN

إذا NOT {وشرط} DO THEN:

MESSAGE THIS-PROCEDURE:FILENAME "ERROR...{&CONDITION}" 
    VIEW-AS ALERT-BOX.
/* add code to email message etc.. or stop */

وEND.

& ENDIF


/ * debugalert.i على بيئات الاختبار أو التطوير    لإيقاف تأكيدات إزالة هذا البيان * /

& GLOBAL-DEFINE DEBUGALERT


/ * في التعليمات البرمجية الاختبار يمكن أن تفعله فقط ما يلي: <م> / / اختبار التأكيد * /

وDEF VAR h_ct AS INT NO-UNDO INIT 10.

{assert.i وشرط = "h_ct = 8"}

وOpenEdge 11.6 قدم وحدة اختبار للعالم من ABL. انها مبني على أسس أداة JUnit. لذا التأكيدات هي الآن جزء من حزمة. مزيد من المعلومات هي في وثائق: <لأ href = "https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/pdsoe/overview-of-ablunit-testing-framework.html" يختلط = "noreferrer نوفولو"> https://documentation.progress.com/output/ua/OpenEdge_latest/index.html#page/pdsoe/overview-of-ablunit-testing-framework.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top