كيف يمكن إضافة خطوة بناء مخصصة إلى مشروع قائم على التشغيل التلقائي في KDevelop؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

لقد بدأت مؤخرًا العمل في مشروع برمجة شخصي باستخدام C++ وKDevelop.على الرغم من أنني بدأت بالاختراق فقط، أعتقد أنه سيكون من الأفضل على المدى الطويل إذا قمت بإعداد مجموعة اختبار وحدة مناسبة قبل المضي قدمًا.لقد قمت بإنشاء برنامج اختبار منفصل قابل للتنفيذ كمشروع فرعي، ويبدو أن الاختبارات التي أضفتها إليه تعمل بشكل صحيح.حتى الآن، النجاح.

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

أتصور أنه من الممكن أن يتم ذلك عن طريق تحرير ملف التعريف يدويًا.لسوء الحظ، فإن ملف makefile-fu الخاص بي ضعيف بعض الشيء، وأخشى أيضًا أن يقوم KDevelop بالكتابة فوق أي تغييرات أقوم بها يدويًا في المرة التالية التي أقوم فيها بتغيير شيء ما من خلال IDE.لذلك، إذا كان هناك خيار حول كيفية القيام بذلك من خلال برنامج KDevelop نفسه، فأنا أفضل اتباع هذا الطريق.

هل يعرف أحد كيف يمكنني جعل KDevelop يقوم بتشغيل ملفات الاختبار القابلة للتنفيذ كجزء من عملية الإنشاء؟شكرًا لك!

(لست مرتبطًا بـ KDevelop بنسبة 100٪.إذا لم يتمكن KDevelop من القيام بذلك، أو إذا كان هناك IDE يجعل هذا الأمر أسهل بكثير، فيمكن إقناعي بالتبديل.)

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

المحلول

على الرغم من أنك استطاع معالجة الهدف الافتراضي "جعل" إجراء اختباراتك ، لا ينصح عمومًا ، لأن كل الاحتجاج

make

سيتم تشغيل كافة الاختبارات.يجب عليك استخدام الهدف "التحقق" بدلاً من ذلك ، وهو أمر شبه مقبول بين حزم البرامج.من خلال القيام بذلك ، يتم بدء الاختبارات فقط عند الركض

make check

يمكنك بعد ذلك تكوين KDEvelop بسهولة لتشغيل "اجعل التحقق" بدلاً من "Make".

نظرًا لأنك تستخدم Automake (من خلال KDEvelop) ، لا تحتاج إلى كتابة الهدف "التحقق" بنفسك.بدلاً من ذلك، ما عليك سوى تعديل ملف "Makefile.am" وتعيين بعض المتغيرات:

TESTS = ...

يرجى إلقاء نظرة علىوثائق التشغيل التلقائي، "دعم مجموعات الاختبار"لمزيد من المعلومات.

نصائح أخرى

لقد حصلت على العمل بهذه الطريقة:

$ cat src/base64.c
//code to be tested
int encode64(...) { ... }

#ifdef UNITTEST
#include <assert.h>
int main(int argc, char* argv[])
{
  assert( encode64(...) == 0 );
  return 0;
}
#endif //UNITTEST
/* end file.c */

$ cat src/Makefile.am
...
check_PROGRAMS = base64-test
base64_test_SOURCES = base64.c
base64_test_CPPFLAGS = -I../include -DUNITTEST
TESTS = base64-test

أ جعل الاختيار سيبني اختبار src/base64 وتشغيله:

$ make check
...
PASS: base64-test
==================
All 1 tests passed
==================
...

الآن أحاول تغليف كل ذلك باعتباره ماكرو m4 لاستخدامه على النحو التالي:

MAKE_UNITTEST(base64.c)

والتي يجب أن تنتج شيئًا مثل الحل أعلاه.

أتمنى أن يساعدك هذا.

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