গুগল টেস্টে কীভাবে সুনির্দিষ্ট পরীক্ষার মামলা চালানো যায়


125

আমি আমার প্রকল্পের জন্য একটি ফাংশন / পদ্ধতি লেখার চেষ্টা করছি, যা ব্যবহারকারীকে জিজ্ঞাসা করবে আপনি কোন পরীক্ষার কেস চালাচ্ছেন? এটি নীচের মত দেখাচ্ছে ...,

Test_Cases_1
         |_TestNo1
         |_TestNo2....so on
Test_Cases_2
         |_TestNo1
         |_TestNo2....so on
....
....so on
Test_Cases_N
         |_TestNo1
         |_TestNo2....so on

সুতরাং, এখন চ্যালেঞ্জটি হচ্ছে প্রকল্পটি পরিচালনা করার সময় এটি আমাকে জিজ্ঞাসা করবে যে সমস্ত পরীক্ষার ক্ষেত্রে আপনি কার্যকর করতে চান? যদি আমি সিলেক্ট করি Test_Cases_1এবং Test_Cases_N। তারপরে এটি এই দুটি পরীক্ষার কেস কার্যকর করতে হবে এবং এগুলি থেকে অন্য সকলকে বাদ দেওয়া উচিত Test_Cases_2 to ....। ফলাফলের উইন্ডোতে এছাড়াও আমি ফলাফল দেখতে চাই Test_Cases_1এবং Test_Cases_N

সুতরাং, আমি যদি গুগল টেস্ট দেখতে পাই তবে একটি পদ্ধতি বলা হয় test_case_to_run_count(); তবে test casesসমস্তগুলি টেস্ট_এফ () পদ্ধতিতে নিবন্ধিত হচ্ছে। সুতরাং, আমি প্রচুর বিশ্লেষণ করেছি, কিন্তু এখনও কোনও সমাধান পাইনি। আমাকে সাহায্য করুন.

উত্তর:


181

গুগল পরীক্ষা চালানোর জন্য আপনি উন্নত বিকল্পগুলি ব্যবহার করতে পারেন ।

কেবলমাত্র কয়েকটি ইউনিট পরীক্ষা চালাতে আপনি --gtest_filter=Test_Cases1*কমান্ড লাইন বিকল্পটি এমন মান সহ ব্যবহার করতে পারেন যা একাধিক পরীক্ষার সাথে ম্যাচের জন্য *এবং ?ওয়াইল্ডকার্ড গ্রহণ করে । আমি মনে করি এটি আপনার সমস্যার সমাধান করবে।

UPD:

ঠিক আছে, প্রশ্নটি ছিল নির্দিষ্ট টেস্ট কেসগুলি কীভাবে চালানো যায় । আপনার জিইউআইয়ের সাথে গেস্টের সংহতকরণ অন্য জিনিস, যা আমি সত্যিই মন্তব্য করতে পারি না, কারণ আপনি নিজের পদ্ধতির বিশদ সরবরাহ করেন নি। তবে আমি বিশ্বাস করি যে নিম্নলিখিত পদ্ধতিটি একটি ভাল শুরু হতে পারে:

  1. দিয়ে পরীক্ষা চালিয়ে সমস্ত টেস্টকেস পান --gtest_list_tests
  2. এই তথ্যটি আপনার জিইউআইতে পার্স করুন
  3. আপনি পরীক্ষা চালাতে চান এমন পরীক্ষার কেসগুলি নির্বাচন করুন
  4. অপশন সহ এক্সিকিউটেবল টেস্ট চালান --gtest_filter

আমি এটি সুপারিশ করব এবং যদি আপনার প্রম্পট-ভিত্তিক সিস্টেমের প্রয়োজন হয় তবে আমি একটি মোড়ক স্ক্রিপ্ট তৈরির পরামর্শ দেব যা ব্যবহারকারীর ইনপুট পায় এবং সে অনুযায়ী পরীক্ষার প্রোগ্রামটি চালায়।
বালক

@nogard: হ্যাঁ, আপনি সঠিক, কিন্তু আমার / আমাদের লক্ষ্য একটি GUI, যা থাকবে থাকতে হয় Treeএর TestCasesএবং TestNo। সুতরাং, আপনার কি মনে হয় --gtest_filter=..সাহায্য করবে?
রাসমি রঞ্জন নায়ক

@ ননগার্ড: সহায়তার জন্য অনেক ধন্যবাদ ... আপনার নির্দেশ অনুসারে আমি এগিয়ে যাব .. আমার কাজ শেষ হয়ে গেলে আমি আপনাকে জানাব।
রাসমি রঞ্জন নায়ক

1
@ নোগার্ড: আপনি যেমন নির্দেশনা দিয়েছেন তেমনই করছি; int main(int argc, char **argv) { //::testing::GTEST_FLAG(list_tests) = true; // For Testing InitGoogleTest(&argc, argv); ::testing::GTEST_FLAG(list_tests) = true; ........ RUN_ALL_TEST();...}তবে এটি কেবল টেস্টকেস এবং টেস্টনো প্রিন্ট করে। এবং এটি পরীক্ষা চালায় না। সুতরাং, এখন আমি কীভাবে পরীক্ষা চালাতে পারি?
রাসমি রঞ্জন নায়ক

@ রসম্মি রঞ্জননায়ক: আমি মূল প্রস্তাবটি একেবারেই পরিবর্তন না করার প্রস্তাব দিয়েছিলাম। আমি দু'বার পরীক্ষা চালানোর প্রস্তাব করছি:
সর্বশেষে

91

@ রাসমি রঞ্জন নায়ক এবং @ উত্তর উত্তরগুলি সংক্ষিপ্ত করে এবং অন্য একটি বিকল্প যুক্ত করা:

কনসোল এ

আপনি পতাকা ব্যবহার করা উচিত --gtest_filter, মত

--gtest_filter=Test_Cases1*

(আপনি এটি সম্পত্তিগুলির মধ্যেও করতে পারেন | কনফিগারেশন বৈশিষ্ট্য | ডিবাগিং | কমান্ড আর্গুমেন্ট)

পরিবেশের উপর

আপনার GTEST_FILTERমত চলক সেট করা উচিত

export GTEST_FILTER = "Test_Cases1*"

কোডে

আপনার filterমত একটি পতাকা সেট করা উচিত

::testing::GTEST_FLAG(filter) = "Test_Cases1*";

যেমন আপনার মূল ফাংশন কিছু হয়ে যায়

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    ::testing::GTEST_FLAG(filter) = "Test_Cases1*";
    return RUN_ALL_TESTS();
}

আপনি যে স্ট্রিংটি ব্যবহার করতে পারেন তার সিনট্যাক্স সম্পর্কে আরও তথ্যের জন্য টেস্টের একটি সাবসেট চালাচ্ছেন বিভাগটি দেখুন ।


6
"কোডটিতে" অংশটি খুব কাজে লাগবে !! এটাই আমি খুঁজছিলাম !!
আইরো

28

অবশেষে আমি কিছু উত্তর পেয়েছি, ::test::GTEST_FLAG(list_tests) = true;// আপনার প্রোগ্রাম থেকে, আর্ট কনসোলটি নয়।

আপনি যদি --gtest_filter =*; /* =*, =xyz*... etc*/// ব্যবহার করতে চান তবে আপনার এগুলি কনসোলে ব্যবহার করা দরকার।

সুতরাং, আমার প্রয়োজনটি এগুলি কনসোল থেকে নয় প্রোগ্রাম থেকে ব্যবহার করা।

Updated:-

শেষ পর্যন্ত প্রোগ্রাম থেকে একই আপডেট করার জন্য উত্তর পেয়েছি।

 ::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
      InitGoogleTest(&argc, argv);
RUN_ALL_TEST();

সুতরাং, সমস্ত উত্তরের জন্য ধন্যবাদ।

আপনি মানুষ মহান।

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