سؤال

ونحن نعمل مع كميات كبيرة من البيانات، وجميع الموسومة في UTC (في جاوة). بين قراءة هذه البيانات وتخزينها في قاعدة بيانات والحصول عليه مرة أخرى، حدث ما حدث، أن بعض البيانات كان من ساعة واحدة أثناء التوقيت الصيفي. كما UTC ليس لديه مفهوم التوقيت الصيفي وكان هذا واضحا خلل في داخل البرنامج. مرة واحدة معروفة، فإنه من السهل لإصلاح.

ولكن، سيكون من الجميل أن يكون بعض الاختبارات وحدة / التكامل التي تعمل بغض النظر عن فارق الوقت الحالي - على سبيل المثال أود أن تغيير المنطقة الزمنية المحلية وتشغيل بعض الطرق مرارا وتكرارا في هذه المناطق الزمنية المختلفة للتأكد من التعامل معها بشكل صحيح UTC.

وكما يجب تشغيل الاختبارات تلقائيا و- يفضل - ضمن واحدة Testsuite، وأنا أتساءل كيف لأفضل اختبار للسلوك الصحيح. فإنه سيكون من السهل تغيير إعدادات المحلية مثل المنطقة الزمنية عند إعادة تشغيل JVM، ولكن تشغيل هذا ضمن مجموعة الاختبار ليس بهذه السهولة.

لا أحد يعرف من بيئة اختبار، مكتبة أو نمط دعم هذا السيناريو؟ نحن نعمل عادة مع أداة JUnit، بل هي مفتوحة لإضافة بيئة / أسلوب آخر إذا كان يساعد على التخلص من مشاكل من هذا القبيل. أعتقد أنه بالأحرى integration- من اختبار وحدة.

تعديل : في هناك بالفعل اثنين من إجابات مفيدة جدا، ولكن أعتقد يجب أن يكون هناك المزيد من التقنيات هناك. هل لدى أي شخص معلومات موثوقة حول متى / كيف في كثير من الأحيان سوف يطلق TimeZone.getDefault (انظر تعليق ل يجيب جون Skeets)؟

ملاحظة : لورغم أن هذا السؤال له إجابة مقبولة، لم أكن متأكدا تماما، والتي تجيب على قبول. حتى مع هذا القبول أود أن نرى المزيد من الأفكار والتقنيات.

وشكرا لمساهمتك!

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

المحلول

وأنصح لك تحقق من JodaTime حيث يوفر بعض السكر للمساعدة في إدارة التسجيل / الوقت القضايا / نوع والوقت أكثر مقروء في التعليمات البرمجية.

ونحن نستخدم هذه في جميع أنحاء الاختبار والإنتاج منذ كيف يعزز API جافا الوطنية لقضايا الساعه / التاريخ لا مثيل له. استخدام هذه الاختبارات في يعمل بشكل جيد داخل أداة JUnit

نصائح أخرى

وجافا يسمح لك لضبط التوقيت الافتراضي (java.util.TimeZone.setDefault). لقد كتبت قبل الاختبارات لضبط التوقيت لمجموعة متنوعة من الخيارات المختلفة والتأكد من أن كل شيء لا يزال يعمل. كن حذرا مع ذلك - إذا كنت parallelising أكثر من وحدة الاختبارات الخاصة بك، سوف تحتاج إلى إجراء هذه منها متتابعة

وأقترح عليك اختبار في بعض المناطق الزمنية مع التوقيت الصيفي ينطبق، وبعض من دونه. باستخدام التوقيت الاسترالي هو جيد أيضا، كما ينطبق DST في الوقت الآخر من السنة إلى نصف الكرة الشمالي.

وماذا عن رأي حول الاتصال ملقمات الوقت والحصول على التحديثات؟

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