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


205

আমার প্যাকেজ পরীক্ষার কেসগুলি একাধিক ফাইলগুলিতে ছড়িয়ে ছিটিয়ে আছে, যদি আমি go test <package_name>এটি চালাই তবে প্যাকেজে সমস্ত পরীক্ষার কেস চালানো হয় ।

যদিও এগুলি সব চালানো অপ্রয়োজনীয়। go testচালানোর জন্য কোনও ফাইল নির্দিষ্ট করার কোনও উপায় আছে , যাতে এটি কেবল ফাইলটিতে সংজ্ঞায়িত পরীক্ষার কেসগুলি চালায়?

go 

উত্তর:


326

দুটি উপায় আছে। -runসহজটি হ'ল পতাকাটি ব্যবহার করা এবং আপনি চালাতে চান এমন পরীক্ষাগুলির নামের সাথে একটি প্যাটার্ন মিলে provide

উদাহরণ:

$ go test -run NameOfTest

আরও তথ্যের জন্য ডক্স দেখুন ।

অন্য উপায়টি হ'ল নির্দিষ্ট ফাইলটির নামকরণ, আপনি যে পরীক্ষা চালাতে চান তা অন্তর্ভুক্ত:

$ go test foo_test.go

কিন্তু একটি ধরা আছে। এটি যদি ভালভাবে কাজ করে তবে:

  • foo.goহয় package foo
  • foo_test.goহয় package foo_testএবং আমদানির 'foo বিন্যাস'।

যদি foo_test.goএবং foo.goএকই প্যাকেজ (একটি সাধারণ কেস) হয় তবে আপনাকে তৈরি করতে প্রয়োজনীয় সমস্ত ফাইলের নাম অবশ্যই দিতে হবে foo_test। এই উদাহরণে এটি হবে:

$ go test foo_test.go foo.go

আমি -runপ্যাটার্নটি ব্যবহার করার পরামর্শ দেব । অথবা, যেখানে / যখন সম্ভব হবে, সর্বদা সমস্ত প্যাকেজ পরীক্ষা চালান।


1
-runআপনি কি দয়া করে প্রথম (সহজ) উপায়ে বিস্তারিত জানাতে আপত্তি করবেন ? আমি এটির কোনও ম্যানুয়াল রেফারেন্স পাই না।

1
আপনি এর সাথে আরও তথ্য পেতে পারেনgo help testflag
জেফ্রি মার্টিনেজ

আমি যখন কমান্ডটি ব্যবহার করি go test utils.go utils_test.goআউটপুট হয় ok command-line-arguments 0.002s। এটি পরীক্ষা চালায় না। আমি এই পরীক্ষার মোডটি ব্যবহার করতে চাইছি কারণ প্যাকেজে অনেকগুলি ফাইল রয়েছে এবং সেগুলি ইউস ব্যতীত এখনও সংকলন করে না। সুতরাং আমি অন্যান্য ফাইলগুলিতে workinqg এর আগে ব্যবহারগুলি চূড়ান্ত করতে চাই। আমি এটা কিভাবে করবো ?
chmike

আপনি যদি পরীক্ষার সময় লগ হয় তা দেখতে চান তবে এটি -v(ভার্বোজ) পতাকাটি উল্লেখ করার উপযুক্ত । দস্তাবেজগুলি থেকে-v Verbose output: log all tests as they are run. Also print all text from Log and Logf calls even if the test succeeds.
রোবস্টবার্ক

121

@ zzzz এর উত্তর বেশিরভাগই সম্পূর্ণ, তবে কেবল রেফারেন্সযুক্ত ডকুমেন্টেশনের মাধ্যমে অন্যকে বাঁচাতে আপনি নীচে একটি প্যাকেজে একক পরীক্ষা চালাতে পারবেন:

go test packageName -run TestName

মনে রাখবেন পরীক্ষা, নামে প্রেরণ করতে ইচ্ছুক না ফাইলের নাম যেখানে পরীক্ষা বিদ্যমান।

-runতাই আপনি পরীক্ষার একটি বর্গ পরীক্ষা রান সীমিত পারে পতাকা আসলে একটি Regex গ্রহণ করে। দস্তাবেজগুলি থেকে:

-run regexp
    Run only those tests and examples matching the regular
    expression.

28
প্যাকেজের নামটি সম্পূর্ণ প্যাকেজের নাম হিসাবে উল্লেখযোগ্য, উদাহরণস্বরূপ "github.com/you/stuff/a/b/c"
আবর্জনাবিহীন

১.৯.৩ প্যাকেজের আপেক্ষিক পথও গ্রহণ করে।

2
নিশ্চিত না কেন, তবে কোনও কারণে, আমার প্যাকেজের নামের আগে "./" উল্লেখ করা উচিত
রোজবেহ জবিহোল্লাহি

12

একটি একক পরীক্ষা চালানোর সময় আমি সাধারণত:

go test -run TestSomethingReallyCool ./folder1/folder2/ -v -count 1

-count 1পরীক্ষাগুলি ক্যাশে হওয়ার পরিবর্তে প্রতিবারই চালানো হয়েছে তাও নিশ্চিত করে। আপনি যখন জাতি শর্তের বিরুদ্ধে পরীক্ষা করছেন এবং কখনও কখনও কখনও ব্যর্থ হন এমন একটি পরীক্ষা করা কার্যকর হয়। গো সংস্করণগুলিতে মডিউলগুলি ব্যবহার না করে সেটি সেট করেই অর্জন করা যেতে পারে GOCACHE=offতবে এটি গো মডিউলগুলির সাথে খারাপভাবে ইন্টারঅ্যাক্ট করে।


6

ইন্টেলিজ আইডিইএ গো-ল্যাং প্লাগইনে (এবং আমি জেটব্রেনস গোগল্যান্ড অনুমান করি) আপনি কেবল চালনার অধীনে ফাইল টাইপ করতে পারেন > কনফিগারেশন সম্পাদনা করুন

স্ক্রিনশট গো ফাইলের উপর পরীক্ষা পরীক্ষা তৈরি করুন


2
গোগল্যান্ডে আপনি কেবল টেস্ট ফাইলটিতে ডান ক্লিক করতে পারেন এবং "রান foo_test.go" চয়ন করতে পারেন এটি পরীক্ষাগুলি সহ প্যাকেজটি তৈরি করবে এবং তারপরে সেই পরীক্ষার ফাইলের সমস্ত পরীক্ষার নাম সম্বলিত একটি রেইজকে পাস করবে -রান পতাকাটিতে to একটি সত্যই দরকারী বৈশিষ্ট্য।
এলওফ

4
alias testcases="sed -n 's/func.*\(Test.*\)(.*/\1/p' | xargs | sed 's/ /|/g'"

go test -v -run $(cat coordinator_test.go | testcases)

2
go test -v ./<package_name> -run Test

পরীক্ষার ফলাফলের ক্যাচিং প্রতিরোধ করে।

go test -count=1 ./<package_name> -run Test

0
go test -v -timeout 30s <path_to_package> -run ^(TestFuncRegEx)
  • টেস্টফঙ্ক অবশ্যই goসেই প্যাকেজে কোনও টেস্ট ফাইলের অভ্যন্তরে থাকতে হবে
  • আমরা পরীক্ষার কেসগুলির একটি সেট বা একক পরীক্ষার কেস চালানোর জন্য সঠিক টেস্ট কেস ফাংশনটির সাথে মেলে নিয়মিত প্রকাশ করতে পারি। এই ক্ষেত্রে-run TestCaseFunc
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.