Pitest (المعروف أيضًا باسم PIT) هو نظام اختبار الطفرة المتطور لـ Java وJVM.
اقرأ كل شيء عنها على https://pitest.org
+funmodifiablecollection
للكود الدفاعيتغيير واجهة برمجة التطبيقات رقم 1321 متوافق مع الإصدارات السابقة، لكن المكونات الإضافية المكتوبة مقابل 1.16.0 قد لا تعمل مع الإصدارات السابقة.
يتم إيقاف تصفية رقم 1310 بشكل افتراضي. لتنشيطه أضف سلسلة التصفية +funmodifiablecollection
.
1309 يضيف خاصية جديدة مخضرمة parseSurefireArgLine
. يتم تعيين هذا على "صحيح" افتراضيًا، ولكن يمكن الآن تعطيل تحليل argline المؤكد عن طريق تعيينه على "خطأ".
#1305 التغطية غير مسجلة للكود الموجود في اسم الحزم com.sun*
كان هناك عامل تصفية مخصص لالتقاط فئات JDK القديمة في الحزمة "com.sun.*" يفتقد إلى '
، مما يؤدي إلى عدم تسجيل تغطية التعليمات البرمجية إذا كان الكود قيد الاختبار موجودًا في حزمة تبدأ بـ "sun".
ستتم إعادة تقديم استدعاء التتبع الديناميكي للمكالمات لرمز التهيئة الثابت عند تنفيذ منطق إضافي لمنع تصفية الطفرة لكود التنفيذ المتأخر.
ملاحظة، قد يحتاج المستخدمون المخضرمون الذين احتاجوا سابقًا إلى تكرار معلمات argline بين jvmArgs
و argline
الخاصة بـsurefire وpitest إلى ضبط التكوين الخاص بهم عند الترقية. سيتم الآن إضافة الإدخالات المقدمة إلى Surefire تلقائيًا إلى Piest.
سيضمن #1267 أنه سيتم الآن الإبلاغ عن الأخطاء المخفية مسبقًا التي واجهها المكون الإضافي JUnit5. هذا تغيير API متوافق مع الإصدارات السابقة. ولن يكون له أي تأثير حتى يتم تحديث المكون الإضافي JUnit5 لاستخدام واجهة برمجة التطبيقات الموسعة. لن يكون البرنامج المساعد المحدث متوافقًا مع الإصدارات السابقة من بيتست.
نتيجة لتغييرات واجهة برمجة التطبيقات المعطلة في رقم 1251، يجب ترقية البرنامج المساعد arcmutate kotlin إلى 1.1.0 عند الترقية إلى بيتيست 1.15.0
#1246 إعطاء الأولوية لاختبار القتل السابق عند استخدام ملفات التاريخ
#1212 يحل إلى حد كبير مشكلة الحفاظ على إصدار البرنامج المساعد pest-junit5 متزامنًا مع إصدار junit5 لمستخدمي maven.
عند استخدامه مع الإصدار 1.2.0 من البرنامج المساعدpitest-junit5، سيقوم Pitest الآن تلقائيًا بتحديد إصدار من junit-platform-launcher المتوافق مع إصدار junit5 الذي يستخدمه النظام قيد الاختبار.
لا تزال هناك مشكلات بالنسبة لمستخدمي Gradle الذين قد لا يزالون يواجهون توافقات واجهة برمجة التطبيقات عند استخدام الإصدار 1.2.0 من البرنامج المساعدpitest-junit5. ومع ذلك، يمكن الآن حل هذه المشكلات عن طريق إضافة الإصدار الصحيح من junit-platform-launcher يدويًا إلى مسار الفصل.
من المأمول أن يقوم الإصدار المستقبلي من المكون الإضافي pest gradle بتنفيذ إصلاح مشابه لحل piest-maven.
**.
نمط في الكرات (شكرًاPfoerd) تتضمن إحصائيات تغطية الخط التي تم الإبلاغ عنها على وحدة التحكم سطورًا برمجية للمشروع بأكمله، حتى عند تطبيق عوامل التصفية. وقد أدى ذلك إلى انخفاض درجات التغطية بشكل كبير.
لاحظ أن #1150 يتضمن تغييرات جذرية في الواجهة والتي قد تتطلب تحديثات للمكونات الإضافية التابعة لجهات خارجية.
excludedRunners
إلى واجهة سطر الأوامر وAnt نتيجة للرقم 1067، من المهم أن يتم إنشاء الطفرات لفئة واحدة فقط لكل JVM. لذلك تمت إزالة نقطة امتداد MutationGrouper
لأن ذلك سمح بانتهاك هذا القيد. لم تعد أي مكونات إضافية تابعة لجهات خارجية تستخدم هذا الامتداد مدعومة.
تتضمن الإصدارات أيضًا تغييرات متعددة على هياكل البيانات الداخلية. قد تحتاج أي مكونات إضافية تابعة لجهة خارجية تعتمد على هذه الهياكل إلى التحديث.
يوفر 1116 طريقة خشنة لاستبعاد التعليمات البرمجية التي تم إنشاؤها تلقائيًا والتي لم يتم التقاطها بواسطة مرشحات بيتست الأخرى. يتم تعطيله افتراضيًا لأنه قد يستبعد التعليمات البرمجية الصالحة للتغيير في بعض المواقف، ولكن يمكن تمكينها عن طريق إضافة سلسلة الميزات +nofirstline
.
يضيف دعمًا للغات مثل Kotlin حيث قد لا تكون الملفات المصدر ضمن بنية دليل تتوافق مع حزمتها. لاحظ أنه في حالة وجود نفس اسم الملف في أكثر من موقع واحد، فلا يمكن لـ Pitest ضمان حل الملف الصحيح.
لاحظ أن #1085 يغير السلوك الافتراضي بحيث لم تعد تتم كتابة التقارير إلى الأدلة ذات الطابع الزمني افتراضيًا. إذا كنت تطلب هذا السلوك، فستحتاج إلى تمكينه بشكل صريح.
1078 هو تغيير جذري في الواجهة، ولكن تم تضمينه في إصدار نقطي حيث يُعتقد أنه لا يوجد عملاء خارجيون حاليًا.
1054 ينقل دعم الإضافة التلقائية بدون رأس=صحيح (لمنع سرقة تركيز لوحة المفاتيح على أجهزة Mac) إلى إحدى الميزات. يتم تمكينه افتراضيًا، ولكن يمكن تعطيله عن طريق إضافة -MACOS_FOCUS
إلى سلسلة الميزات.
1055 يضيف خيار تخمين العدد المناسب من المواضيع للجهاز الحالي عن طريق إضافة +auto_threads
سلسلة الميزات. يتم تعطيل هذا الخيار بشكل افتراضي وهو مصمم للاستخدام المحلي. لا يوصى باستخدامه على خادم CI.
dependencyDistance
نتيجة للرقم #1040، يجب تحديث أي مكونات إضافية خارجية لاختبار Pitest (مثل JUnit 5 وTestNG وarcmutate accelerator) إلى إصدار متوافق (1.0.0) عند الترقية.
ملفات السجل من الإصدارات السابقة غير متوافقة ويجب حذفها عند الترقية.
نتيجة للرقم #1015، يجب الآن تكوين البرنامج الإضافي TestNG عند استخدام Pitest في قواعد التعليمات البرمجية التي تم اختبارها بواسطة TestNG. في الإصدارات السابقة تم تضمين الدعم تلقائيًا.
نتيجة للرقم 993، يجب على أي شخص يرغب في استخدام مشغلي RV الموجهين للبحث أن يقوم بتكوين البرنامج الإضافي pest-rv، ومع ذلك لا يوصى باستخدام هذه المتحولات للاستخدام العام.
emptyMap
بدلاً من القيمة الخاليةبسبب التغييرات الداخلية، قد تكون بعض المكونات الإضافية التابعة لجهات خارجية غير متوافقة مع هذا الإصدار.
يجب حذف كافة ملفات السجل قبل الترقية.
لقد تغيرت أسماء أدوات إزالة الشرطات الشرطية قليلاً نتيجة للرقم #930 وقد تحتاج إلى التحديث في البرامج النصية الخاصة بالإنشاء إذا تم تنشيطها بشكل صريح.
نتيجة للرقم #900، أصبحت معلمة testPlugin
معطلة الآن، ولكن سيستمر Pitest في قبولها دون خطأ لهذا الإصدار. سيستخدم Pitest أي محركات اختبار متوفرة في مسار الفصل، ويعود إلى دعم JUnit4 المدمج عندما لا تتمكن محركات الاختبار الأخرى من التعامل مع الفصل.
testPlugin
و failWhenNoMutations
(شكرًا @mduggan)useClasspathJar
الجديد (شكرًا @jqhan)لاحظ عند الترقية أن ملفات السجل التي تم إنشاؤها بواسطة الإصدارات السابقة غير متوافقة مع الإصدار 1.3.2 أعلاه.
excludedTestClasses
428 يغير السلوك الحالي لمرشح الفئات المستبعدة. في السابق، كان هذا يستبعد الفئات من التحور والتشغيل كاختبارات قد تتطلب تغييرات لبعض الأشخاص عند الترقية.
نتيجة لـ 429 اختبارًا من اختبارات TestNG، لن يتم اكتشافها تلقائيًا بعد الآن - يجب تعيين معلمة testPlugin
الجديدة بشكل صريح على "testng".
(الملاحظة رقم 347 لن تكتشف javax.annotaion.Generated
لأنها تحتوي على الاحتفاظ بالمصدر فقط.)
ملاحظة - اعتبارًا من هذا الإصدار، سيحدد المكون الإضافي maven تلقائيًا الفئات التي سيتم تغييرها بدلاً من افتراض أن أسماء الحزم تتطابق مع معرف المجموعة.
maxSurviving
من المسوخلاحظ أن هذا الإصدار يحتوي على مشكلة معروفة (#231). يرجى الترقية.
includeLaunchClasspath=false
على نظام التشغيل Windowsيرجى ملاحظة أن أي ملفات محفوظات مخزنة أو نتائج السونار قد تم إبطالها بواسطة هذا الإصدار.
لاحظ أن إعداد المشاريع المستندة إلى Ant يتغير في هذا الإصدار. راجع إعداد النمل للحصول على تفاصيل حول الاستخدام.
يغير هذا الإصدار أيضًا عددًا من تفاصيل التنفيذ الداخلي، والتي قد يكون بعضها ذا أهمية/أهمية لأولئك الذين يحافظون على الأدوات التي تتكامل مع PIT.
يتم الآن تحديد نطاق الطفرات داخليًا كما هو موضح في https://groups.google.com/forum/#!topic/pitusers/E0-3QZuMYjE
تم تقديم فئة جديدة (org.pitest.mutationtest.tooling.EntryPoint) تعمل على إزالة بعض الازدواجية التي كانت موجودة في الطرق المختلفة لبدء تحليل الطفرات.
مشكلة معروفة - إصلاح رقم 33 قد لا يحل المشكلة لمستخدمي maven 2.
لم يتم بعد اختبار اكتشاف كود Groovy باستخدام Groovy 2 والذي قد ينشئ كود بايت مختلفًا بشكل كبير عن الإصدارات السابقة.
قد يحتاج المستخدمون الذين يقومون بالترقية إلى تعديل بنيتهم بسبب إزالة معلمة inScopeClasses
مشكلة معروفة - قد يتسبب متغير العضو الجديد في حدوث أخطاء في الأخطاء المتزامنة. ومع ذلك، يتم تعطيل Mutator افتراضيًا، وتتم معالجة الأخطاء الناتجة بشكل صحيح بواسطة PIT.
يرجى الرجوع إلى قواعد إدارة المشكلات الخاصة بنا قبل إنشاء المشكلات أو العمل عليها.
Pitest هو في الأساس عمل لي ولكنه استفاد من مساهمات العديد من الآخرين.
تشمل المساهمات البارزة غير المرئية هنا حيث تم إجراؤها قبل ترحيل هذا الرمز إلى جيثب
على الرغم من أن PIT لا تتضمن أي تعليمات برمجية من مشروع Jumble (http://jumble.sourceforge.net/)، فقد تم استخدام قاعدة بيانات Jumble كدليل عند تطوير بعض جوانب PIT.