سؤال

أحاول إضافة اختبار الوحدة الأول الخاص بي إلى مشروع مفتوح المصدر موجود.وعلى وجه التحديد، أضفت فئة جديدة تسمى audio_manager:

src/audio/audio_manager.h
src/audio/audio_manager.cc

لقد قمت بإنشاء بنية دليل src/test التي تعكس بنية ملفات التنفيذ، وكتبت ملفي com.googletest اختبارات الوحدة:

src/test/audio/audio_manager.cc

الآن، أحاول إعداد Makefile.am الخاص بي لتجميع وتشغيل اختبار الوحدة:

src/test/audio/Makefile.am

لقد قمت بنسخ Makefile.am من:

src/audio/Makefile.am

هل لدى أي شخص وصفة بسيطة بالنسبة لي، أم أنها تتعلق بوثائق التشغيل التلقائي المبهمة بالنسبة لي؟:)

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

المحلول 2

لقد أوصلتني إجابة ويليام إلى حيث كنت بحاجة للذهاب.فقط من أجل المجتمع، إليك ما انتهى بي الأمر إلى فعله:

  1. لقد قمت بنقل اختباراتي مرة أخرى إلى بنية الدليل الرئيسي وأضفت اختبارًا مسبقًا، وفقًا لاقتراحات ويليام.
  2. أضفت بضعة أسطر إلى src/audio/Makefile.am لتمكين اختبارات الوحدة:

    # Unit tests
    noinst_PROGRAMS = test_audio_manager
    
    test_audio_manager_SOURCES  = $(libadonthell_audio_la_SOURCES) test_audio_manager.cc
    test_audio_manager_CXXFLAGS = $(libadonthell_audio_la_CXXFLAGS)
    test_audio_manager_LDADD    = $(libadonthell_audio_la_LIBADD) -lgtest
    
    TESTS = test_audio_manager
    
  3. الآن، يؤدي تشغيل "إجراء فحص" إلى إطلاق اختبارات الوحدة!

كل هذا يمكن رؤيته هنا: http://github.com/ksterker/adonthell/commit/aacdb0fe22f59e61ef0f5986827af180c56ae9f3

نصائح أخرى

وإذا كان المشروع موجود بالفعل بنية الاختبار في مكان، ثم عليك أن أضيف فقط:

TESTS += audio_manager

وللاختبارات الحالية / Makefile.am. إذا لم يكن لديك مشروع قائم على بنية الاختبار في مكان، يجب تشغيل يصرخون طلبا للتلال.

إذا تشغيل لالتلال غير مقبول، وهناك بأس به من عمل في الحصول على بنية الاختبار في مكان، ولكنها ليست مستعصية على الحل. قد تفضل لجعل الاختبارات أخ من SRC، ولكن هذا ليس ضروريا. من المحتمل أن يكون من الأسهل أن تبدأ مع Makefile.am الطازجة بدلا من نسخ Makefile.am من SRC، ولكن ربما لا. ربما، كل ما عليك القيام به هو تغيير خطوط النموذج:

bin_PROGRAMS = ...

إلى

check_PROGRAMS = ...

وإضافة خط

TESTS = test-audio-manager

وتغيير اسم audio_manager.cc إلى test-audio-manager.cc (هذا ليس ضروريا تماما، ولكن سوف تساعد الصيانة لقد غيرت _ ل- بحتة من تفضيل شخصي) وإضافة

SUBDIRS = tests/audio

لSRC / Makefile.am. (إذا كان هناك بالفعل دليل فرعي التوجيه، إلحاقي لتلك المهمة أو استخدام + =)

والمدح المعلومات في إجابات أخرى، يمكنك أيضا تحديد اختبارات متعددة للTESTS.

وبغض النظر عن عدد الاختبارات التي تحدد، لم يكن لديك فعلا لتحديدها مرتين، TESTS بدلا من مجرد مجموعة ل$(check_PROGRAMS) - وهذا يمكن أن تساعد على منع وضع عرضي إضافة اختبار لcheck_PROGRAMS لكن نسيان لإضافته إلى TESTS ، مما تسبب في اختبار جديد لتضاف إلى البناء، ولكن لم يتم تشغيلها من قبل make check:

# Unit tests
check_PROGRAMS = test_audio_manager

test_audio_manager_SOURCES  = test_audio_manager.cc

TESTS = $(check_PROGRAMS)

... أو أن تفعل الشيء نفسه مع اختبارات متعددة:

# Unit tests
check_PROGRAMS = test_audio_manager test_video_manager

test_audio_manager_SOURCES  = test_audio_manager.cc
test_video_manager_SOURCES  = test_video_manager.cc

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