اذهب إلى المحتوى

السؤال

نشر

قرأت قليلاً عن البرمجة الموجهة بالإختبار TDD ماهي الفائدة منها و لماذا نستخدمها.

ثانياً قمت بإنشاء Test عن طريق الأمر التالي:

php artisan make:test JustExample

قام الأمر بإنشاء ملف JustExample.php بشكل جيد لكن عندما وضعت الدالة التالية:

class JustExample extends TestCase
{

    public function just_test_method()
    {
        $result = 2 * 5;
        $this->assertEquals(50, $result);
    }
}

و تنفيذ الأمر:

phpunit

لا يظهر أن الإختبار فشل في نافذة الكونسول لأن المفروض المُتغير result لا يحتوي على القيمة 50 بل 10 

Recommended Posts

  • 0
نشر

البرمجة الموجهة بالإختبار هي البرمجة عن طريق البدء بكتابة إختبارات لكل وظيفة بالتطبيق، وكل إختبار يجب أن يقوم بتحديد وشرح الكيفية التي سيتم التعامل بها مع الكود وما هو الناتج الذي من المفترض أن يقوم بإرجاعه في حال تم تنفيذ كل شيء بنجاح، وتقوم هذه الاختبارات بإرجاع إما حالة نجاح والتي تعني أن الكود يعمل بالطريقة الصحيحة التي يجب أن يقوم بها، أو حالة فشل في حال أن الكود به أخطاء وأنه لا يقوم بإرجاع الناتج الصحيح الذي يجب أن يقوم بإرجاعه لحالة الاختبار تلك.

لذلك إن كنت تريد إنشاء تطبيق أو مشروع يعمل بشكل جيد و مُختبر من عدة نواحي، و تنتقل بمستواك في تطوير البرمجيات إلى مُستوى أعلى فعليك النظر في هذا الموضوع.

هذه بعض الفوائد:

  • تحدد لك الطريق للبدء بكتابة الكود فعوض أن تكون متردد في كتابة خصائص التطبيق وقلق بشأن إذا ما كان الكود الذي تكتبه سيعمل بشكل صحيح فالإختبارات ستقوم بقيادتك
  • تقليل الأخطاء في المشروع
  • يعطيك الثقة بالنفس
  • تسهيل عملية إعادة بناء التعليمات البرمجية أو ما يُسمى بال refactoring دون القلق على عمل الخصائص
  • إضافة خصائص و العمل على طلبات العميل بشكل سليم و بدون أية قلق

هناك بعض القواعد التي يجب أن تنتبه لها عند إنشائك لأصناف الإختبار في laravel ف phpunit تبحث عن الملفات التي تنتهي ب Test.php لذلك على كل من الملف و الكلاس أن ينتهيان ب Test. و عند إنشائك لملف Test جديد عن طريق أمر Artisan عليك أن تُحدد ذلك:

php artisan make:test JustExampleTest

أيضاً أسماء التوابع يجب أن تبدأ بالكلمة test كما يلي:

public function test_method_to_assert_something()
{
  $result = 2 * 5;
  $this->assertEquals(50, $result);
}

الآن إذا قمت بتنفيذ أمر phpunit سيفشل الإختبار و هو ما نتوقعه ان يحدث. وسيُعطيك النتيجة التالية:

Failed asserting that 10 matches expected 50.

إذا أردنا تسمية التوابع بأسماء أخرى غير التي تبدأ ب test يُمكننا ذلك لكن يجب أن نُحدد ال annotation لكل تابع على أنه test بهذا الشكل مثلا:

class JustExampleTest extends TestCase
{

    /** @test */
    public function it_just_a_simple_test()
    {
        $result = 2 * 5;
        $this->assertEquals(50, $result);
    }
}

بعض هذه الإعدادات يُمكن تعديلها من خلال ملف phpunit.xml لكن لا داعي لذلك، فقط إحترم تسمية الملفات و ضع ال annotation.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...