سؤال

كيف اختبار واحد إذا طلب تقديم شيء بشكل صحيح ؟

على سبيل المثال (2D سبيل المثال):

Microsoft Word 2007 http://img32.imageshack.us/img32/6197/37841144.png

كيف تعرف أن ظل وضعها بشكل صحيح أو اللون الصحيح / مخطط كانت حالتها ؟ أو إذا كان تأثير 3D بشكل صحيح يجعل عند واحد تدوير في اتجاه ؟ أشياء أخرى يمكن إن كلمة فن إعادة الحجم, كيف يمكن قياس لها 'صحة'?

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

المحلول

وهناك عدد قليل من الطرق:

  1. لو كان في الواقع بدقة تحديد ما ينبغي أن تكون المقدمة و بالضبط في الطريقة التي ثم يمكنك فقط مقارنة بكسل إلى مرجع التقديم.
  2. في حالة الأشياء مثل SVG ليس من الواضح المحدد.النهج المعتاد هنا هو استخدام إشارة الاداءات ومقارنتها باليد.يمكنك بسهولة تراكب على حد سواء ، طرح من بقعة الاختلافات الصارخة بهذه الطريقة.انها ليست عملية تلقائية ، على الرغم من.
  3. يمكنك إلقاء نظرة على البيانات التي تمثل رسم صورة بدلا من صورة على الشاشة مباشرة.ما يحصل على الانتباه هو (في المثال) ناقلات الرسم.وهذا يعني أن هناك العديد من الأشكال التي يجب أن يكون واضح المعالم خصائص الأشكال و الألوان و يمكنك ببساطة مقارنة شكل البيانات إلى إشارة.هذا النوع من الأشياء التي يمكن القيام به تلقائيا.أعتقد أن جوجل يستخدم نهج مماثل مقارنة كروم التقديم مع الإشارة الاداءات من صفحات الويب ؛ أنها لا تقارن بكسل البيانات ، يقارنون أعلى مستوى البيانات ماذا وكيف المتصفح أن تقديم.

نصائح أخرى

وهناك طريقتان: الصورة وجعل مقرها واحدة

والطريقة صورة: يجب عليك أن تجد وسيلة لتقديم صورة إلى وجود مخزن مؤقت بكسل الداخلي (حتى تتمكن من تشغيل الاختبارات الخاصة بك "بلا رأس"، أي دون UI الفعلي ظهرت)

وبعد ذلك اختيار بكسل قليلة وتأكد من ألوانها صحيحة. في المثال، حدد بضعة بكسل البيضاء حول النص للتأكد من تقديم لا تسرب. سوف أساليب المساعد مثل assertThatRectangleIs(area, color) مساعدة في تغطية بعض الأرض. والفكرة هي لتحديد مجالات محددة (مثل شريط الأيسر العمودي للH) وألا يكون من الصعب إرضاءه جدا.

والطريقة جعل مقرها يعمل مع افتراض أن أعمال مكتبة GFX الخاص بك. لذلك ما عليك القيام به هو لك يسخر رمز التقديم الفعلي مع شيء من هذا القبيل:

public class MockGC extends GC {
    List<Op> ops = new ArrayList<Op> ();
    void drawLine (int x1, int y1, int x2, int y2) {
        ops.add(new Line(x1, y1, x2, y2, copyGC (gc)));
    }
}

لذلك أنت فقط حفظ الأمر وجميع الخيارات ذات الصلة في بنية البيانات التي هي سهلة للمقارنة. أو حتى:

public class MockGC extends GC {
    StringBuilder buffer = new StringBuilder ();

    void drawLine (int x1, int y1, int x2, int y2) {
        buffer.append("line "+x1+","+y1+" - "+x2+","+y2+", color="+foreground()+"\n");
    }
}

وفي وقت لاحق، يمكنك بعد ذلك فقط تحقق من أن صدرت الأوامر تقديم الصحيحة وأن GC (الألوان والخط وتقديم تلميحات) تم استخدامها.

والطريقة الأخيرة هي أسرع بكثير، و 100٪ عمل دقيق ولكن أكثر من ذلك بكثير إلى رمز.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top