اختبار Markop هو أداة اختبار مجانية ومفتوحة ومركز لـ .NET . باستخدام اختبارات Markop ، يمكنك بسهولة كتابة اختبارات الوحدة واختبارات التكامل والاختبارات الوظيفية واختبارات التحميل .
من أجل استخدام اختبار Markop ، يجب عليك القيام بالخطوات التالية:
1- قم بإنشاء مشروع مكتبة الفصل داخل الحل الخاص بك وقم بتسميته وفقًا لنوع الاختبار الذي تريد القيام به ، على سبيل المثال ، "FunctionAttest". لا تنس إضافة المشروع إلى الحل الخاص بك.
dotnet new classlib -n [YOUR PROJECT NAME] dotnet sln add [YOUR PROJECT NAME] 3- قم بتثبيت حزمة اختبار Markop داخل مشروع الاختبار الخاص بك:
Nuget:
Install-Package MarkopTestأو باستخدام dotnet cli:
dotnet add package MarkopTest4- بناءً على نوع الاختبار الذي تريد القيام به ، يجب عليك الانتقال إلى: اختبار الوحدة ، اختبار التكامل ، اختبار وظيفي أو اختبار تحميل.
من المفترض أن تختبر اختبارات الوحدة سلوك أصغر قطعة من التعليمات البرمجية. اختبار Markop هنا لجعل هذه العملية آلية بالكامل. لم تكن اختبارات وحدة الكتابة أسهل من قبل !!
بادئ ذي بدء ، يجب عليك إنشاء فئة AppFactory تمديدها من فئة UnitTestFactory .
ثم تحتاج إلى تجاوز أساليب Initializer ConfigureTestServices
تمنحك طريقة Initializer القدرة على بدء قاعدة بيانات مخصصة لاختبار كل ما عليك فعله هو إنشاء مُعمى مخصص ودعوها هنا. اختبار ماركوب سوف يعتني بالباقي !!
تمنحك طريقة ConfigureTestServices القدرة على تسجيل/إزالة الخدمات. وبهذه الطريقة ، سيكون لديك سيطرة كاملة على الخدمات المسجلة لتطبيقك قبل البدء في الاختبار !!

ثم تحتاج إلى إنشاء فصل وتوسيعه من فئة AppFactory الخاصة بك
بعد ذلك ، يجب عليك تحديد طريقة داخل فصلك ووضع سمة اختبار pereferable. يمكن أن يكون [Fact] أو [Theory] أو أي سمة اختبار صالحة أخرى في Xunit.
الآن يمكنك البدء في كتابة رمز الاختبار الخاص بك داخل طريقتك !!
على سبيل المثال في الرمز أدناه ، كتبنا رمزًا لاختبار طريقة تمديد تسمى EmailNormalize

جزء من اختبار البرمجيات الذي يختبر مكونات الكود الفردي للتحقق من صحة التفاعلات بين وحدات نظام البرمجيات المختلفة.
نستخدم هذه الاختبارات يتم استخدامها لاختبار البنية التحتية للتطبيق والإطار بأكمله ، بما في ذلك المكونات التالية:
يوفر Markop تجريدًا من مصنع التطبيق لجعل من السهل تنفيذ اختبار التكامل النظيف وعرض الإخراج بدلاً من استخدام أدوات اختبار API الخارجية مثل Postman.

بادئ ذي بدء ، يجب عليك إنشاء فئة AppFactory تمديدها من فئة IntegrationTestFactory .
بعد ذلك ، تحتاج إلى تجاوز المهيئة ، ConfervureTestServices ، Geturl ، Facalateresponse Methods.
ثم تحتاج إلى إنشاء فئة وتوسيعه من فئة AppFactory الخاصة بك. لتنفيذ أنظف نقترح إنشاء فصل لكل وحدة تحكم في واجهة برمجة التطبيقات الخاصة بك.
استخدم ATRRIBITY Endpoint لتحديد نمط لعناوين الطلب.
بعد ذلك ، يجب عليك تحديد طريقة داخل فصلك ووضع سمة اختبار pereferable. يمكن أن يكون [Fact] أو [Theory] أو أي سمة اختبار صالحة أخرى في Xunit.
الآن يمكنك البدء في كتابة رمز الاختبار الخاص بك داخل طريقتك !!
على سبيل المثال في الرمز أدناه ، كتبنا رمزًا لاختبار واجهة برمجة تطبيقات SignIn

الانتباه 1 : في متغيرات وقت التشغيل مثل controller action داخل Endpoint ، سيتم تعديلها باسم فصلك واسم طريقتك .
انتباه 2 : اختبار Markop تلقائيًا يجهل ["الاختبار" ، "الاختبارات" ، "وحدة التحكم"] في نهاية اسم الفصل الخاص بك.
على سبيل المثال في الرمز أعلاه ، ستكون قيمة controller "حساب" وستكون قيمة action "علامة". سيتم إرسال الطلبات إلى /Account/SignIn .
يحدد الاختبار وظيفة المنتج التي يمكن القيام بها عن طريق تجميع اختبارات التكامل ومقارنة الإخراج الفعلي مع الإخراج المحدد مسبقًا.
نستخدم سيناريوهات الحالة للاختبار الوظيفي. على سبيل المثال ، في نظام الأخبار ، يجب علينا اختبار سيناريوهات الأخبار مثل إنشاء كيان الأخبار وتحريره وحذفه ، يمكنك تنفيذ سير عمل المعاملات في نظامك.
كما هو الحال في اختبار التكامل ، يوفر Markop تجريد مصنع التطبيق لجعل من السهل تنفيذ اختبار وظيفي نظيف .
Initializer(IServiceProvider hostServices) : تمنحك طريقة Initializer القدرة على بدء قاعدة بيانات مخصصة للاختبار. كل ما عليك فعله هو بناء مُهيئك المخصص ودعوته هنا. اختبار ماركوب سوف يعتني بالباقي !!
ConfigureTestServices(IServiceCollection services) تمنحك طريقة ConfigureTestServices القدرة على تسجيل/إزالة الخدمات. وبهذه الطريقة ، سيكون لديك سيطرة كاملة على الخدمات المسجلة لتطبيقك قبل البدء في الاختبار !!

GetUrl(string url, string controllerName, string testMethodName) يساعدك GetUrl في إنشاء العنوان الصحيح الذي سترسل HTTPClient الطلب عليه.
ValidateResponse(HttpResponseMessage httpResponseMessage,TFetchOptions fetchOptions) يمكّنك ValidateResponse من تخصيص Proccess للتحقق من صحة الاستجابة وفقًا للسلوك المتوقع من واجهة برمجة التطبيقات الخاصة بك.
إذا كنت مهتمًا بالمساهمة في هذا المشروع ، أولاً وقبل كل شيء ، نود أن تمد امتناني القلبية.
لا تتردد في التواصل معنا إذا كنت بحاجة إلى مساعدة.
معهد ماساتشوستس للتكنولوجيا