Friday 9 March 2018

يوتوفوريكتيونسويثتيموت يوس


اختبار وحدة غير متزامن في كسكودي 6.
في العام الماضي وصفت طريقة لتنفيذ اختبار وحدة غير متزامن في كسكودي 5.
اسمحوا & # 8217؛ ق أذكر أنفسنا من المشكلة مع غير المتزامن اختبار وحدة. العديد من واجهات برمجة التطبيقات على منصة يوس نفسها غير متزامنة. لديهم استدعاءات الاستدعاء للإشارة عندما تكون & # 8217؛ اكتملت، وهذه قد تعمل في طوابير مختلفة. قد يقومون بعمل طلبات الشبكة أو الكتابة إلى نظام الملفات المحلي. يمكن أن تكون هذه المهام تستغرق وقتا طويلا التي تحتاج إلى تشغيل في الخلفية. هذا يخلق مشكلة لأن الاختبارات نفسها تعمل بشكل متزامن. لذلك لدينا اختبارات تحتاج إلى الانتظار حتى يتم إعلامهم عندما اكتمال المهمة قيد التشغيل.
واقترحت طريقة تستتبع وضع علم منطقي في اختبار الوحدة وحلقة في حلقة () حتى يتم تعيين العلم على فالس، مما يسمح لاكمال الاختبار بشكل صحيح. عملت هذه الطريقة أكثر من مرة ولكن لم أكن سعيدا معها، فيما يتعلق بأنها قليلا من كلودج. في تلك المدونة بلوقت:
لا يزال لدي تحفظاتي حول هذه التقنية، وأنا لا تزال تبحث عن الحل الأمثل لاختبار وحدة غير متزامن في كسكودي. كنت أعتقد أن أبل قد قدمت حلا في شكتست، ربما مماثلة لتنفيذ في غونيت.
هنا & # 8217؛ ق ما الهدف - C نسخة من عارية عارية مثال اختبار وحدة غير متزامن في كسكودي 5 باستخدام الطريقة القديمة يشبه:
في الواقع، لأنني كنت إعادة استخدام نفس النمط في العديد من الاختبارات بلدي، وأنا تحويل أجزاء منه إلى ماكرو التي كان لابد من تضمينها في كل ملف رأس. أيضا، لاحظت أنه في ظل بعض الظروف لم يتم الاختبار بشكل صحيح.
حسنا، والخبر السار هو أنه بعد أقل من عام، وقد سلمت أبل وسيلة لتنفيذ اختبارات وحدة غير متزامن بطريقة ذكية وأوفسيالي المدعومة. وعلاوة على ذلك، ليس فقط أنها قدمت لنا نسخة جديدة من كسكودي 6 (لا يزال في مرحلة تجريبية في وقت كتابة هذا الكتاب) مع هذا الإطار الجديد اختبار الوحدة، ولكن أنها أيضا تسليم العلامة التجارية الجديدة لغة البرمجة، سويفت. لقد قضيت بعض الوقت على مدى الأسابيع القليلة الماضية في تحويل جزء ضخم من الرمز أوبجكتيف-C إلى سويفت، وفي تحويل اختبارات الوحدة إلى إطار ككتست، نفذت أساليب أبل & # 8217 الجديدة لاختبار الوحدات غير المتزامنة. من الآن فصاعدا، كل من بلدي الترميز دائرة الرقابة الداخلية هو القيام به في سويفت، وبالتالي فإن الأمثلة أدناه ستكون في سويفت أيضا.
فكيف يعمل؟ في كسكودي 6 أضافت أبل بعض الامتدادات إلى فئة شكتستكيس، وأنا & # 8217؛ م الذهاب للتركيز على اثنين منهم:
هناك أيضا فئة جديدة، شكتيستكسكتاتيون التي لديها طريقة واحدة:
في الأساس، تعلن عن & # 8220؛ توقع & # 8221؛ في اختبار الوحدة الخاصة بك، وحلقة في حلقة الانتظار في انتظار توقع أن يتم الوفاء بها في التعليمات البرمجية. هو نفس النمط كما كان من قبل، ولكن مع المزيد من الخيارات. هنا & # 821؛ s رمز الهدف القديم - C تحويلها إلى سويفت باستخدام الإطار الجديد:
في السطر 6 نحن إنشاء مثيل جديد من شكتستكسكتاتيون، واسمه ريديكسكتاتيون. نعطيها وصفا بسيطا للراحة، & # 8220؛ جاهزة & # 8221 ؛. سيتم عرض هذا في سجل الاختبار للمساعدة في تشخيص حالات الفشل. ومن الممكن أيضا لوضع أكثر من توقع واحد كشرط. ثم في السطر 9 نقوم بإجراء المكالمة إلى التعليمات البرمجية التي تحتاج إلى اختبار. في معالج الانتهاء، بعد إجراء الاختبارات لدينا، ونحن نسمي طريقة الوفاء () على التوقعات. وهذا يعادل وضع العلم على خطأ في تنفيذ هدفنا السابق - C.
آخر كتلة من كلود ابتداء من خط 18 تدير حلقة تشغيل أثناء التعامل مع الأحداث حتى يتم الوفاء بجميع التوقعات أو تم التوصل إلى المهلة. أنا تعيين مهلة إلى 5 ثوان لتكون على الجانب الآمن.
وهذا & # 8217؛ ق عنه. هناك المزيد مما يمكنك القيام به مع الإضافات الجديدة إلى إطار اختبار الوحدة، مثل مراقبة القيمة الرئيسية، ومقاييس الأداء، ولكن ما سبق يجب أن يكون كافيا للحصول على الذهاب. وأخيرا، لدينا إطار مناسب لاختبار متزامن وحدة في كسكودي!
4 أفكار حول & لدكو؛ اختبار وحدة غير متزامن في كسكودي 6 & رديقو؛
تهانينا لنشر مقالة التحديث هذه، كانت المقالات السابقة جيدة جدا ولكنني & # 8217؛ سعيد لأنك قمت بنشر هذه المعلومات عن ككتيست =)
شكرا جزيلا. حفظت هذه المقالة اليوم. ثابر على العمل الجيد.

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

كيفية استخدام يوس التوقعات لاختبار وظائف غير المتزامنة دون أسلوب رد الاتصال.
وقد حقق إطار اختبار أبل خطوات كبيرة في السنوات الأخيرة. فقد أصبح ناضجا إلى النقطة التي التنمية يحركها الاختبار (تد) ليست ممكنة فقط، ولكن ممتعة. وقد أدى إدخال التوقعات إلى حل واحدة من أكبر العقبات عندما يتعلق الأمر بالاختبار: العمليات غير المتزامنة. اتبع على طول ونحن نتحدث عن حالة الاستخدام المشترك لطرق غير المتزامنة مع كتل الانتهاء (ويعرف أيضا باسم شكتستكسكتاتيون). سوف ننظر أيضا في كيفية استخدام شكتيستكسكتاتيون لاختبار العمليات غير المتزامنة التي ليس لديها طريقة رد الاتصال.
كيف التوقعات تحسين تد.
قبل التوقعات، كان اختبار أي شفرة تحتوي على عنصر غير متزامن عليها إما يتطلب عمل ويب من التعليمات البرمجية التي في حد ذاتها ربما تحتاج الاختبار، أو أكثر عقلانية، واستخدام مكتبة اختبار طرف ثالث (على سبيل المثال الكيوي، والطيف). على الرغم من أن التوقعات كانت متأخرة للحزب، فإن المطورين عبقرية على أبل أضاف لهم بطريقة رشيقة، بديهية جعلتهم تبدو وكأنهم كانوا جزءا من عائلة الاختبار للأجيال.
كيف رشيقة؟ لنأخذ هذا المقتطف على سبيل المثال:
والنتيجة من أعلاه سيكون أسوأ من فشل الاختبار، حيث أن طريقة الاختبار سوف الخروج على الرغم من أن هناك معالج الانتهاء مع تأكيد أن اقول لكم ان الاختبار قد مرت وكل شيء بارد. ولكن باستخدام التوقعات، نضيف بضعة أسطر من الشفرة:
مع توقع تعيين في السطر الأول، يمكننا تشغيل بأمان طريقتنا. عندما نتلقى ردنا في معالج الانتهاء، يتم اختبار تأكيد لدينا وندعو الوفاء على التوقعات. حتى يتم الوفاء يسمى طريقة الاختبار يعتبر الانتهاء، لذلك لدينا طريقة لديها الكثير من الوقت لإطلاق الاستعلام والعودة صفيف. ثم ضربنا تأكيدنا وندعو إلى تحقيق ما إذا كان التأكيد صحيحا أم لا.
ماذا لو كان الاستعلام معلق هناك؟ أليس كذلك.
اختبار الفشل؟ الذهاب إلى تصمد بقية الاختبارات؟
حسنا، هذا ما لدينا القليل قليلا من التعليمات البرمجية لا. ويتفوريكسكتاتيونسويثتيميوت: معالج: يفعل بالضبط كما في مطول مفرط، حتى الآن على اسم الأنف يعني. تمريره مرتين وانها سوف تنتظر أن العديد من الثواني للتوقع أن يتم الوفاء بها. إذا كان هذا الوقت (في هذه الحالة، خمس ثوان) يمر، ستحصل على رسالة فشل مما يتيح لك معرفة توقيت مهلة.
أصبحت التطبيقات الحديثة شبكة تعتمد، البرق الوحوش أوي سريع، وهو ما يعني الكثير من العمل نخر يتم بشكل غير متزامن - إما في انتظار استجابة الشبكة، أو رفح إلى موضوع الخلفية. التوقعات توفر وسيلة بديهية لاختبار هذه الأساليب، في حين يعطي لك سبب أقل واحد لتجنب بناء الاختبارات في التطبيقات الخاصة بك.
كيفية اختبار وظائف أسينك بدون أسلوب رد الاتصال.
ماذا لو لم أحضر معالج إتمام هذا الاختبار؟ توقعات تعمل تماما للوظائف غير المتزامنة التي لديها معالج الانتهاء من نوع ما. هذا ليس هو الحال تماما لتلك الوظائف غير المتزامنة التي ليس لديها كتل. كيف يمكننا اختبار هذه دون اللجوء إلى إضافة كتلة فقط لغرض الاختبار؟
يمكننا، بطبيعة الحال، نعود إلى ديبي (أيام كئيب قبل التوقعات) والاستفادة من سيمافوريس أو إرسال مجموعات لحل هذه المشكلة. ولكن بعد ذلك كنا نتحرك بعيدا عن "الفرح من تد" إلى اختبارات معقدة للغاية كنا نحاول تجنب منذ البداية. حسنا، الخوف لا! وضع غراند الوسطى إرسال مرة أخرى في كهفها والجلوس حول الوهج الدافئ من التوقعات مرة أخرى!
لنفترض أن لدينا فئة مصدر بيانات لعرض جدولنا الذي يبدأ تشغيل أسلوب يستعلم دب لدينا البعيد ويملأ مصفوفة مع النتائج. نريد أن نختبر ذلك، بعد استدعاء إينت صفيف الكائن الناتج يتم ملء، ولكن نحن لا نريد لاختبار هذا الحق بعد استدعاء إينيت. وبالتالي:
من خلال الجمع بين توقع مع dispatch_after، لديك وسيلة لتطبيق اختبارات على طريقة أو الملكية التي تعتمد على عمليات غير المتزامنة الخاصة دون الحاجة إلى فضح أساليب أو جيري تلاعب معالج الانتهاء فقط لأغراض الاختبار.
مذكرة ختامية.
وقد قام فريق أبل بعمل رائع في جعل التوقعات وسيلة بديهية لاختبار العمليات غير المتزامنة. دمجها في عملية الاختبار الخاص بك هو غير مؤلم، في حين أن أولئك الذين بدأت للتو مع اختبار ربما نفترض أن شكتستكسكتاتيون كان هناك منذ اليوم الأول.
تاريخ 20،000+ القراء الآخرين.
الاشتراك ليتم إعلامك من بلوق وظائف جديدة وتكون أول من يحصل على الأشياء المفيدة التطبيق مفيدة من تطبيقات والدهاء!
جاز هو مطور التطبيق الذي يتمتع خلق التفاعلات لذيذ، أساطيل من السير في العالم المهيمن، و. التورية.
مقالات مقترحة.
تكاليف تطوير التطبيق: ما يفصل 10000 $ التطبيق من 100،000 $ التطبيق؟
لا يزال هناك ارتباك في السوق حول السبب في تكلفة لتطوير التطبيق يمكن أن تختلف كثيرا من شركة إلى أخرى. في حين والدهاء.
7 أسئلة الشركات الناشئة تحتاج إلى الإجابة قبل بناء التطبيق.
في سبع سنوات تطبيقات الدهاء وقد تم صياغة تطبيقات الحائز على جائزة، لقد عملنا على نطاق واسع مع الشركات الناشئة والمشاريع في مرحلة مبكرة. سواء كان رجل أعمال الذي.
28 المقاييس التي تهم للتطبيق الخاص بك.
قضيت الوقت والمال بناء التطبيق الخاص بك، والآن عليك أن تبدأ تقييم كيفية القيام به. نحن كسر 28 من المقاييس الأكثر فائدة في.
كم من الوقت يستغرق لجعل التطبيق؟
في حين أنه يختلف اختلافا كبيرا، والإجابة العامة التي نقدمها إلى الناس يسألنا كم من الوقت يستغرق لبناء التطبيق هو 4-6 أشهر. أن.
الناس الآخرين القراءة.
المقالات الأخيرة.
تريد أن تعمل معنا؟
تطبيقات الدهاء هو تصميم واشنطن المحمول، D. C المحمول وشركة تطوير النقالة التي تخدم العلامات التجارية العالمية والشركات الناشئة المتطورة. نحن فريق المنتج للتأجير التي يقودها جعل الحياة أفضل، التطبيق واحد في وقت واحد.
1850 سنتنيال بارك دريف.
ريستون، فرجينيا 20191.
&نسخ؛ 2009-2017 تطبيقات الدهاء، ليك جميع الحقوق محفوظة.

اختبار غير متزامن مع هكود 6.
في عام 2013، أبل شحنها إطار اختبار تجديد في كسكودي دعا شكتيست، وكان هناك الكثير من البهجة. لم يتم تحديث الإطار القديم منذ سنوات، وقد نشأ عدد من أدوات وأطر اختبار الطرف الثالث لتوفير ميزات وقدرات جديدة. كان من الجيد أن نرى المدمج في أدوات الحصول على بعض الحب مرة أخرى، وهذا العام، أبل هو شحن بعض الميزات مع كسكودي 6 التي كانت في عداد المفقودين من التحديث الماضي Ђ s ™. واحد áЂЂ ™ م سعيدة بشكل خاص أن نرى هو دعم لاختبار غير متزامن.
إذا كان لدينا اختبار يجب أن تبدأ مهمة غير متزامنة، سواء كان يتم تشغيلها في مؤشر ترابط آخر أو في رونلوب الموضوع الرئيسي ЂЂ،، كيف يمكننا اختبار ذلك؟
فكر في طلب ويب. يمكن أن نبدأ طلب ويب وتمرير في كتلة الانتهاء، ثم جعل لدينا تأكيدات الاختبار، إما في معالج الانتهاء أم لا. ومع ذلك، لأنه لم يتم حتى طلب الويب حتى الآن، حتى أقل استجابة وردت ولا قد تم استدعاء كتلة الانتهاء لدينا، وطريقة الاختبار لدينا هو الذهاب للخروج قبل أن يتم اختبار التأكيدات من أي وقت مضى.
دعونا ننظر إلى اختبار لفئة التي تقوم بتنزيل صفحات الويب. عادة، نحن لن نرغب في جعل طلبات الويب الفعلية في الاختبارات. وبدلا من ذلك، نقوم بربط الطلبات باستخدام بعض الأدوات (جزء جزئي إلى أوهتبتبوس). ولكن لأغراض هذه الأمثلة، ونحن سوف ليرة لبنانية كسر بعض القواعد وجعل طلبات الويب الحقيقية.
يمكننا أن نعطي الفئة تحت الاختبار عنوان ورل وكتلة معالج الانتهاء، وسوف تحميل الصفحة وندعو كتلة، ويمر في سلسلة تحتوي على صفحة ويب أو سلسلة فارغة إذا حدث فشل. إيت ليس ™ أبي كبيرة، ولكن مرة أخرى، ونحن break كسر بعض القواعد. ومع ذلك، فإن رمز الاختبار أدناه لن تفشل أبدا. ستعود طريقة الاختبار دون إعطاء كتلة كومبليتيونهاندلر فرصة ليتم استدعاؤها.
قبل نسخة كسكود 6†™ من شكتست، فقط باستخدام ما يأتي في القصدير مع كسكود، يمكن أن نجلس وتدور في حلقة في حين أن يدعو حلقة تشغيل الموضوع الرئيسي ™ s حتى وصول الاستجابة أو انقضت فترة المهلة. هنا s العمل رمز الاختبار، الطريقة القديمة.
تقوم الحلقة أثناء تشغيل حلقة التشغيل الرئيسية ЂЂ s s لمدة 10 مللي ثانية في المرة الواحدة حتى يصل الرد، أو حتى 5 ثوان ينتهي دون أن وصلت. هذا هو صالح للخدمة. هذا ليس رهيبة. انها ليست نهاية العالم تطوير البرمجيات "ولكن itЂЂ ™ ليست كبيرة.
الآن هناكЂ s s أفضل طريقة.
توقعات عالية.
مع كسكودي 6، وأضافت أبل توقعات الاختبار إلى إطار ككتست في شكل فئة ككتستكسكتاتيون. عندما نخلق توقعات الاختبار، يتوقع إطار الاختبار أنه سيتم الوفاء بها في مرحلة ما في المستقبل. لدينا رمز الاختبار يلبي التوقعات في كتلة الانتهاء مع استدعاء الأسلوب شكتيستكسكتاتيون الوفاء. هذا يأخذ مكان وضع العلم مثل استجابة هاسريفيد في المثال السابق. ثم نقول إطار الاختبار للانتظار (مع مهلة) لتوقعاتها إلى أن يتم الوفاء بها عن طريق الأسلوب ككتستكيس ويتفوريكسكتاتيونسويثتيميوت: معالج:. إذا تم تنفيذ معالج الإكمال خلال المهلة والمكالمات الوفاء، ثم كل من التوقعات ™ s سيكون قد تم الوفاء بها. إذا لم يكن كذلك، فإن الاختبار سيعيش حزين، وحيدا، ونيففيلد الوجودЂЂ حتى يخرج من النطاق. وعن طريق العيش حزين، وحيدا، وعدم وجود الوجود، أعني أن التوقعات تفشل الاختبار عند توقيت.
إن التوقعات الفاشلة يجب أن لا تشعر بذلك. تذكر أن النتيجة الفاشلة ليست علامة على اختبار سيئ؛ نتيجة غير محددة هي. هذا التوقع يمكن أن يشعر بالفخر كما يعلن الفشل.
مثال هنا باستخدام ككتستكسكتاتيون:
خلق التوقعات مع وصف لجعل النتائج أكثر قابلية للقراءة. في كتلة الإنجاز، استدعاء [توقع الوفاء] لنقول للاختبار أن هذا التوقع قد تم بالفعل الوفاء به. ثم شنق في ويتفوريكسكتاتيونسويثتيميوت: معالج: حتى يتم إرسال الطلب، وصول الاستجابة ويسمى معالج الانتهاء لدينا Ђ or أو مهلة يحدث.
وهذا جيد جدا ™ Object الهدف - C، ولكن يمكننا أيضا أن نفعل ذلك في أبل سو ™ لامعة جديدة سويفت اللغة.
و ذلك Ђ ™ ق ذلك. إيتاس ™ ق فئة سهلة الاستخدام لاختبار رمز غير متزامن.
هل يمكن الحصول على معلومات كافية عن نظام التشغيل يوس 8 و سويفت؟ الانضمام إلينا لدينا بداية دائرة الرقابة الداخلية مع سويفت والمتقدمة دائرة الرقابة الداخلية بوتكامبس.
الوظائف ذات الصلة:
احدث التعليقات.
تطوير التطبيقات.
تدريب فريق.
شركة.
حقوق الطبع والنشر والنسخ. 1998 - 2017 بيج نيرد رانش، ليك. كل الحقوق محفوظة. | سياسة الخصوصية.

No comments:

Post a Comment