كيف يمكنني تعطيل اختبارات Dunit بالاسم برمجيًا؟

StackOverflow https://stackoverflow.com/questions/4279127

  •  28-09-2019
  •  | 
  •  

سؤال

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

هذا يعني أن أجنحة الاختبار لن تكتمل بنسبة 100 ٪. بالنسبة للاختبارات الآلية ، ومع ذلك ، مطلوب درجة نجاح 100 ٪. لا تقدم Dunit طريقة جاهزة لتعطيل الاختبارات في جناح اختبار بالاسم.

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

المحلول

لقد كتبت إجراءًا يأخذ مجموعة اختبار وقائمة من أسماء الاختبارات ، واضطراب جميع الاختبارات باسم مطابقة ، كما تقوم بإجراء عودة إلى أجنحة الاختبار المتداخلة.

procedure DisableTests(const ATest: ITest; const AExclude: TStrings);
var
  I: Integer;
begin
  if AExclude.IndexOf(ATest.Name) <> -1  then
  begin
    ATest.Enabled := False;
  end;
  for I := 0 to ATest.Tests.Count - 1 do
  begin
    DisableTests(ATest.Tests[I] as ITest, AExclude);
  end
end;

مثال على الاستخدام (يتم إنشاء قائمة tstringlist "باستثناء" في طريقة الإعداد):

procedure TSuiteVersion1beta2.SetUp;
begin
  // fill test suite
  inherited;

  // exclude some tests because they will fail anyway
  Excludes.Add('TestA');
  Excludes.Add('TestB');

  DisableTests(Self, Excludes);
end;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top