Dunit: كيفية إجراء الاختبارات؟
-
21-09-2019 - |
سؤال
كيف أركض حالة اختبارمن IDE؟
لقد قمت بإنشاء مشروع جديد ، مع شكل واحد ، بسيط:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
end.
الآن سأضيف حالة اختبار للتحقق من ذلك الضغط Button1
يفعل ما ينبغي:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
uses
TestFramework;
type
TForm1Tests = class(TTestCase)
private
f: TForm1;
protected
procedure SetUp; override;
procedure TearDown; override;
published
procedure TestButton1Click;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
//todo
end;
{ TForm1Tests }
procedure TForm1Tests.SetUp;
begin
inherited;
f := TForm1.Create(nil);
end;
procedure TForm1Tests.TearDown;
begin
f.Free;
inherited;
end;
procedure TForm1Tests.TestButton1Click;
begin
f.Button1Click(nil);
Self.CheckEqualsString('Hello, world!', f.Caption);
end;
end.
بالنظر إلى ما قمت به (رمز الاختبار في مشروع واجهة المستخدم الرسومية) ، كيف يمكنني الآن تشغيل مجموعة من الاختبارات؟ إذا دفعت F9 ثم يظهر النموذج ببساطة:
من الناحية المثالية ، سيكون هناك زر ، أو خيار قائمة ، في قول IDE تشغيل اختبارات Dunit:
هل أعيش في عالم الأحلام؟ أرض خيالية تعيش في منزل اللثة على Lollipop Lane؟
المحلول
وأنا أتفق مع Uwe Raabe ، ولكن في بعض الأحيان قد يكون من المفيد أن يكون لديك رابط "مخفي" داخل تطبيقك لتشغيل Dunit GUI. أنا أستعمل:
TGUITestRunner.runRegisteredTests;
اتصل بهذا من الزر الخاص بك في Dunit GUI سيتم فتحه لك لتشغيل إخراج الاختبار يدويًا وعرض الاختبار.
على سبيل المثال ، إذا قمت بإلقاء مجموعة مفاتيح خاصة عند فتح البرنامج الخاص "لوحة التحكم", ، تحصل على بعض الإدخالات المتقدمة:
نصائح أخرى
إضافة اختبار إلى المشروع الرئيسي ليس هو الطريق للذهاب. يجب عليك إنشاء مشروع TestProject منفصل (يمكنك الحصول عليه في نفس ProjectGroup مثل المشروع الرئيسي) ، وإضافة testcase وتشغيله.
أنا أحب فكرة وجود ملف 'Run DUnit tests'
أمر في IDE.
يمكن تنفيذها عن طريق التحقق من مشروع Dunit في نفس المجلد ، وله نفس اسم المشروع الحالي:
- Project1.dpr -> البرنامج قيد الاختبار
- project1.tests.dpr => تطبيق اختبار Dunit
في هذه الحالة ، يجب على IDE تمكين الأمر Run Dunit Tests.
بعد تنفيذ الاختبارات ، يجب عرض قائمة بجميع الاختبارات الفاشلة والتي تسمح بالقفز إلى سطر المصدر حيث الاختبار باءت بالفشل.
إذا تسببت الاختبارات في تسرب الذاكرة ، فيجب عرض قائمة بجميع التسريبات مما يسمح بالقفز إلى سطر المصدر حيث تم إنشاء تسرب الذاكرة
(يمكن تكوين Dunit للكشف عن تسرب الذاكرة وفشل الاختبارات عند العثور على واحد)