في منشور المدونة هذا، سأشرح الفرق الرئيسي بين هاتين الطريقتين. أولا لماذا نستخدم هذه الأساليب. ستكون هذه الطريقة مفيدة عندما نختبر أداء أساليبنا أو عندما نريد معرفة مقدار الوقت الذي تستغرقه طريقتنا حتى تكتمل.
أولاً علينا أن نعطي وقتًا لطريقة الاختبار الخاصة بنا، وبعد ذلك تقوم هذه الاختبارات بتنفيذ العمليات في الاختبار. إذا استغرقت هذه العمليات وقتًا أطول من المحدد، فسيفشل هذا الاختبار.
حسنًا الآن، نحن نعرف ما هي هذه الأساليب، ولماذا نستخدمها في طرق الاختبار لدينا. ثم يجب علينا أن نعرف الفرق.
اسمحوا لي أن أشرح بإيجاز. تحسب طريقة AssurTimeout الوقت الذي نمنحه، إذا استغرقت طريقة الاختبار الخاصة بنا وقتًا أطول من المحدد، فسيفشل هذا الاختبار بعد اكتمال جميع العمليات. ومع ذلك، إذا استغرق الأسلوب SubmitTimeoutPreemptively وقتًا أطول من المحدد، فستفشل هذه الطريقة على الفور. ولن ننتظر حتى تكتمل جميع العمليات، وسنختبر ذلك في المشروع في الخطوة التالية.
افتح IDE المفضل لديك أولاً. أفتح Intellij Idea لأن بيئة التطوير المتكاملة (IDE) تحظى بشعبية كبيرة بين مطوري Java. بالطبع يمكنك استخدام بيئة التطوير المتكاملة (IDE) المفضلة لديك مثل Eclipse وNetbeans أيهما تفضل.
الآن قم بإنشاء مشروع Maven جديد وأضف هاتين التبعيتين إلى ملف pom.xml الخاص بك.
org.junit.jupiter junit-jupiter-api 5.3.1 test org.junit.jupiter junit-jupiter-engine 5.3.1 test
بعد إضافة هذه العناصر، افتح المجلد src/test/java و
أنشئ فصلًا جديدًا وأعطي الاسم الذي تريده وسأعطيه TimeoutTest.
إنشاء طريقتين للاختبار، إحداهما تختبر AssurTimeout والأخرى تختبر AssurTimeoutPreemptively.
بعد ذلك أعطي المدة وأضيف رسالة مطبوعة بسيطة.
أضيف طريقة Thread.sleep() وينام الخيط 8000 مللي ثانية (8 ثوانٍ). لكن هاتين الطريقتين ستفشلان لأن هاتين الطريقتين تستغرقان وقتًا أطول من 3 ثوانٍ. اسمحوا لي أن أختبر هذه الأساليب لفهم أفضل.
وترى أن طريقة testAssertTimeout تستغرق 8s 3ms لأن هذه الطريقة تنتظر إكمال جميع العمليات، لكن الطريقة الأخرى تستغرق 3s 45ms، ولا تنتظر لإكمال العملية الأخرى ، فإنه يفشل على الفور.
يمكنك رؤية الرسالة التي تقوم طريقة testAssertTimeout بطباعة الرسالة ولكن الطريقة AssureTimeoutPreemptively لا تطبع الرسالة، بل تتجاهل العمليات الأخرى.
تحدثنا في هذا المنشور عن الفرق الرئيسي بين AcceptTimeout وassertTimeoutPreemptively.
أخيرًا، الكود متاح على جيثب.
اعتني بنفسك، نراكم قريبًا.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3