সিএমকে ব্যবহার করে, কীভাবে আমি সিস্টেস্ট থেকে ভার্বোজ আউটপুট পাব?


109

আমি আমার প্রকল্পটি তৈরি করতে সিএমকে ব্যবহার করছি। আমি একটি ইউনিট পরীক্ষার বাইনারি যুক্ত করেছি যা বুস্ট ইউনিট পরীক্ষার কাঠামোটি ব্যবহার করছে। এই এক বাইনারি সমস্ত ইউনিট পরীক্ষা রয়েছে। আমি সেই বাইনারিটি সিটি টেস্ট দ্বারা চালিত করার জন্য যুক্ত করেছি:

ADD_EXECUTABLE( tftest test-main.cpp )
ENABLE_TESTING()
ADD_TEST( UnitTests tftest)

তবে ভিজ্যুয়াল স্টুডিওতে বিল্ড আউটপুট কেবল সিটিস্টে চলমান ফলাফলটি দেখায়:

      Start 1: UnitTests
  1/1 Test #1: UnitTests ................***Failed    0.05 sec

  0% tests passed, 1 tests failed out of 1

এটি খুব সহায়ক নয়, কারণ কোন পরীক্ষাটি ব্যর্থ হয়েছে তা আমি দেখতে পাচ্ছি না। যদি আমি কমান্ড লাইন থেকে ম্যানুয়ালি ক্রেস্ট চালাই তবে আমি --verboseবুস্ট ইউনিট পরীক্ষা থেকে আউটপুট পাই যা আসলে কী ব্যর্থ হয়েছিল তা বলে:

1: Test command: tftest.exe
1: Test timeout computed to be: 9.99988e+006
1: Running 4 test cases...
1: test-main.cpp(20): error in "sanity_check3": check 1 == 2 failed
1:
1: *** 1 failure detected in test suite "Master Test Suite"
1/1 Test #1: UnitTests ................***Failed    0.00 sec

সুতরাং, সিটিস্টের সাথে সর্বদা চালিত হওয়ার জন্য আমার সিএমকেলিস্ট.টেক্সট এ কী পরিবর্তন করতে --verboseহবে? সিএমকে / সিস্টেস্টের সাথে বুস্ট ইউনিট পরীক্ষাগুলি ব্যবহার করার কি আরও ভাল উপায় আছে?


উত্তর:


92

আপনি পরিবেশের পরিবর্তনশীল সেট করতে পারেন CTEST_OUTPUT_ON_FAILUREযা পরীক্ষার ব্যর্থ হলে পরীক্ষার প্রোগ্রাম থেকে যে কোনও আউটপুট আপনাকে দেখায়। মেকফাইলস এবং কমান্ড লাইন ব্যবহার করার সময় এটি করার একটি উপায় নিম্নরূপ হবে:

env CTEST_OUTPUT_ON_FAILURE=1 make check

এই স্ট্যাক ওভারফ্লো প্রশ্ন এবং উত্তর কীভাবে ভিজ্যুয়াল স্টুডিওতে পরিবেশের ভেরিয়েবল সেট করবেন তা দেখায়।


3
আমার জন্য কাজ করে না (কেষ্ট সংস্করণ 2.8.12.1)। আমি চেষ্টা SET(CTEST_OUTPUT_ON_FAILURE TRUE)এবং SET(CTEST_OUTPUT_ON_FAILURE ON), কিন্তু এটা কোনো প্রভাব নেই। ওয়েবের অন্যান্য প্রতিবেদনগুলি এটি ভাঙ্গা হয়েছে বলে প্রমাণিত করে।
জোচিম ডব্লিউ

4
@ জোচিমওয়ট্ক পরিবেশের পরিবর্তনশীল set(CTEST_OUTPUT_ON_FAILURE TRUE)সেট করে না । কমান্ড লাইনে এটি চেষ্টা করুন : . CTEST_OUTPUT_ON_FAILURE=TRUE make test
হাউস

3
make CTEST_OUTPUT_ON_FAILURE=1 testস্বল্প এবং সুন্দর আইএমও।
টিম্ম্ম্ম

উইন্ডোজ ব্যাচ ফাইলে, কল করার সময় CTEST_OUTPUT_ON_FAILURE = 1 কীভাবে ব্যবহার করবেন - এমএসবিল্ড / টোলসভার্শন ১৫.০ / পি: কনফিগারেশন = প্রকাশ / পি: প্ল্যাটফর্ম = x64 টিএসটিএস.ভিসিএক্সপ্রজ
টোরাল


29
  1. আপনি Testing/Temporaryসাবফোল্ডারটি পরীক্ষা করতে পারেন । এটি মেক টেস্ট চালানোর পরে স্বয়ংক্রিয়ভাবে তৈরি হয়। এই ফোল্ডারে দুটি ফাইল রয়েছে: LastTest.logএবং LastTestsFailed.logLastTest.logরান পরীক্ষার জন্য কাঙ্ক্ষিত আউটপুট রয়েছে। LastTestFailed.logব্যর্থ পরীক্ষার নাম রয়েছে। সুতরাং আপনি মৃত্যুদন্ড কার্যকর করার পরে তাদের ম্যানুয়ালি পরীক্ষা করতে পারেন make test

  2. দ্বিতীয় উপায়টি হচ্ছে পরীক্ষা চালানোর পরে আপনাকে লগ ফাইলের সামগ্রী প্রদর্শন করার জন্য কেষ্ট পেতে:

    1. জায়গা বিল্ড Dir (যার থেকে আপনি চালানোর make test) ফাইল CTestCustom.ctest (আপনার সাথে এটা করতে পারেন কনফিগার ফাইল সঙ্গে, কমান্ড উদাহরণস্বরূপ) নিম্নলিখিত বিষয়বস্তু

      CTEST_CUSTOM_POST_TEST ("বিড়াল পরীক্ষা / অস্থায়ী / সর্বশেষ টেস্ট.লগ")

বিড়ালের পরিবর্তে আপনি উইন্ডোজ সিএমডি কমান্ড যা একই জিনিসগুলি ব্যবহার করে তা ব্যবহার করতে পারেন।

  1. make testআবার দৌড়াও এবং লাভ!

কাস্টমাইজিং সম্পর্কে অতিরিক্ত তথ্য আপনি এখানে দেখতে পারেন । "কাস্টমাইজিং চ্যামেক" বিভাগে কেবল পদক্ষেপ করুন। শুভকামনা!


1
ঠিক আছে, ধন্যবাদ. আমি আশা করছিলাম যে কেষ্টের জন্য প্রকল্প / মেকফিলগুলিতে সন্নিবেশ করা পতাকাগুলি সংশোধন করার কোনও উপায় থাকবে তবে আমি কিছুই পাইনি এবং আপনার উত্তর এটি নিশ্চিত করেছে বলে মনে হচ্ছে। ফাইল নামের তথ্য সহায়ক!
Skrymsli

1
২.৮.১০ এর আশেপাশে কোথাও তারা CTEST_CUSTOM_POST_TEST- এ আর্গুমেন্ট সহ বাহ্যিক কমান্ড ব্যবহার করে ভেঙেছে github.com/openscad/openscad/issues/260 দেখুন
উজ্জ্বল

@ ডন: সম্ভবত তারা কেষ্টের উপর পর্যাপ্ত পরীক্ষা চালাচ্ছে না ;-)
জোচিম ডব্লিউ

CTEST_CUSTOM_POST_TEST এর সাথে সিএমকে ইস্যুটি 2.8.12 এ স্থির করা হয়েছে।
এলা 782

23

আমাকে নিজের দ্বারা "চেক" লক্ষ্য যুক্ত করতে হয়েছিল। "পরীক্ষা করা" কোনও কারণে কিছুই করে না। তাই আমি যা করেছি (যেমন স্ট্যাকওভারফ্লোতে কোথাও পরামর্শ দেওয়া হয়েছিল) - আমি নিজেই এই লক্ষ্যটি যুক্ত করেছি। ভার্বোজ আউটপুট পেতে আমি ঠিক এটি লিখেছিলাম:

add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND} --verbose)

21

একটি খুব সহজ সমাধান রয়েছে (যা কোনও কারণে গুগল অনুসন্ধানের মাধ্যমে খুঁজে পাওয়া কঠিন):

ctest --output-on-failure

আপনি যদি ভিজ্যুয়াল স্টুডিওর ওপেন ফোল্ডার ফাংশন সহ সিএমকে ব্যবহার করেন তবে আপনি এটি যুক্ত করতে পারেন

"ctestCommandArgs": "--output-on-failure"

আপনার বিল্ড কনফিগারেশন সেট।


1
আমি আপনার সমাধান খুব পছন্দ করি; ব্যর্থতা ব্যতীত এটি ভার্জোজ নয়।
অ্যান্টনিডি 973

19

make check CTEST_OUTPUT_ON_FAILURE=TRUE


6
সমস্ত ডাউন-ভোটগুলি বরং বিস্ময়কর: এটি গৃহীত উত্তরের প্রায় সমান, তবে খাটো এবং সুন্দর। আমি পরীক্ষিত প্রকল্পেও কাজ করে।
zbyszek

2
CTEST_OUTPUT_ON_FAILURE = 1 পরীক্ষা করুন
অ্যালেক্স পুন্নেন


10

আমার পদ্ধতির উত্তর সংমিশ্রণ ony থেকে , zbyszek থেকে , এবং tarc থেকে । আমি আসল কেষ্ট কমান্ডটি ব্যবহার ${CMAKE_COMMAND}করে -E env CTEST_OUTPUT_ON_FAILURE=1আর্গুমেন্টের সাহায্যে ভেরিয়েবলটি (যা আমন্ত্রণযোগ্য সিমেকে এক্সিকিউটেবলের পরম পাথে সেট করা আছে) ব্যবহার করি ${CMAKE_CTEST_COMMAND} -C $<CONFIG>। যা চলছে তা স্পষ্ট করতে সহায়তা করার জন্য, আমি cmake -E echoবর্তমান ওয়ার্কিং ডিরেক্টরিটি নির্দেশ করার জন্য তিনটি কমান্ড এবং কাস্ট কমান্ড দিয়ে শুরু করব। এখানে আমি কল add_custom_target

add_custom_target(check 
        ${CMAKE_COMMAND} -E echo CWD=${CMAKE_BINARY_DIR}
        COMMAND ${CMAKE_COMMAND} -E echo CMD=${CMAKE_CTEST_COMMAND} -C $<CONFIG>
        COMMAND ${CMAKE_COMMAND} -E echo ----------------------------------
        COMMAND ${CMAKE_COMMAND} -E env CTEST_OUTPUT_ON_FAILURE=1
            ${CMAKE_CTEST_COMMAND} -C $<CONFIG>
    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
    DEPENDS ALL_BUILD
    )

এটি এমএসভিসি আইডিইয়ের সাথে দুর্দান্ত খেলায় যেখানে পরীক্ষার ত্রুটিগুলি ক্লিকযোগ্য সংকলন ত্রুটি হিসাবে দেখানো হয়। পোর্টেবল কমান্ড লাইন সরঞ্জাম মোডের ডকুমেন্টেশনের জন্য cmake -E env দেখুন cmake -E। আমি এর উপর একটি নির্ভরতাও যুক্ত করি ALL_BUILDযাতে checkলক্ষ্যটি চাওয়ার আগে সমস্ত প্রকল্পগুলি তৈরি করা যায় । (লিনাক্স বিল্ডগুলিতে, কোনওটির ALL_BUILDসাথে প্রতিস্থাপনের প্রয়োজন হতে পারে ALL; আমি এখনও লিনাক্সে এটি পরীক্ষা করি নি))


6

ভিজ্যুয়াল স্টুডিও ব্যবহারকারী লোকেদের জন্য এখানে থিমটিতে আরও একটি ভিন্নতা (হ্যাক) রয়েছে:

cmake -E env CTEST_OUTPUT_ON_FAILURE=1 cmake --build . --target RUN_TESTS

0

এক্সএমএল ফাইলের সাথে ফলাফলটি দেখানোর জন্য আপনাকে নিম্নলিখিত কমান্ড দিয়ে পরীক্ষা চালাতে হবে

~$ ctest -T Test

এবং আমরা পরীক্ষার ফলাফলটি পেয়েছি / 1234123432 / test.xML এবং অন্যান্য ফাইলগুলি টেস্টিং ফোল্ডারেও উত্পন্ন হয়েছে


0

ctest -VV অথবা ctest --extra-verbose

ডকুমেন্টেশন থেকে :

পরীক্ষাগুলি থেকে আরও ভার্বোজ আউটপুট সক্ষম করুন।

পরীক্ষার আউটপুটটি সাধারণত দমন করা হয় এবং কেবল সংক্ষিপ্তসার তথ্য প্রদর্শিত হয়। এই বিকল্পটি আরও বেশি পরীক্ষার আউটপুট প্রদর্শন করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.