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


131

রেল পরীক্ষা স্যুট থেকে আমি কীভাবে একটি একক পরীক্ষা চালাতে পারি?

rake test ANYTHING সাহায্য না বলে মনে হচ্ছে।


উত্তর:


158

দ্রষ্টব্য: এটি পরীক্ষা দিয়ে চালায় না rake। সুতরাং আপনার যে কোনও কোড Rakefileকার্যকর হবে না।

একটি পরীক্ষা চালাতে, আপনার রেল প্রকল্পের প্রধান ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

ruby -I test test/unit/my_model_test.rb -n test_name

এটি "নামের" নামে একটি একক পরীক্ষা চালায় যা নির্দিষ্ট ফাইলটিতে মাইমডেলস্টেস্ট শ্রেণিতে সংজ্ঞায়িত হয়। পরীক্ষার নামটি পরীক্ষার নামটি দিয়ে তৈরি করা হয়, এটি "পরীক্ষা" শব্দের সাথে প্রিপেন্ড করে, তারপরে শব্দগুলিকে আন্ডারস্কোর দিয়ে পৃথক করে। উদাহরণ স্বরূপ:

class MyModelTest < ActiveSupport::TestCase

  test "valid with good attributes" do
    # do whatever you do
  end

  test "invalid with bad attributes" do
    # do whatever you do
  end
end

আপনি উভয় পরীক্ষার মাধ্যমে চালাতে পারেন:

ruby -I test test/unit/my_model_test.rb

এবং মাত্র দ্বিতীয় পরীক্ষা মাধ্যমে

ruby -I test test/unit/my_model_test.rb -n test_invalid_with_bad_attributes

4
এটি আমার জন্য কার্যকর নয় (কার্যকরী বা ইউনিট পরীক্ষায়)। আমি পেতে 0 tests, 0 assertions, 0 failures, 0 errors। রেলগুলি 3.0.7।
বি সাত

10
আমি ব্যক্তিগতভাবে Regex ফর্ম একটি ফ্যান: -n "/good/"। শেল পালানো সর্বদা মজাদার, তাই আমি সাধারণ রেজিওসের সাথে লেগে থাকি, তবে পুরো পরীক্ষার নামটি সর্বদা লেখার চেয়ে অনেক সহজ।
গ্রুমিক্স

4
এটি লক্ষ করা গুরুত্বপূর্ণ যে এটি কাজ করার জন্য, আপনাকে প্রতিক্রিয়া অনুসারে মাইন ডিরেক্টরিতে থাকা উচিত নয় তবে test/ফোল্ডারটি অন্তর্ভুক্তকারী ডিরেক্টরিতে থাকতে হবে । উদাহরণস্বরূপ, আমি পরীক্ষা চালাতে চাইলে activesupport/test/core_ext/array_ext_test.rbআমার activesupport/প্রথম হওয়া উচিত ।
ভিনসেন্ট বি

3
@ গ্রোগক্স - অবশেষে একটি সমাধান! ধন্যবাদ! -n "/good/"কাজ করছে.
বি সেভেন

2018+ এ এটি চালিয়ে যেতে সাবধান হন। এটি রেলগুলিতে নির্মিত কিছু পরীক্ষামূলক কাজকে বাইপাস করে (যেমন ডিবি: পরীক্ষা: প্রস্তুতি) যা অনেক কিছুর জন্য ব্যবহৃত হয়, যেমন ফিক্সারের ডেটার জন্য স্থানীয় ডেটা অদলবদল করা এবং এটি আবার পুনরুদ্ধার করা। এটি চালানো আমার স্থানীয় ডেটাবেসটিকে দূরে ফেলেছে। স্ট্যাকওভারফ্লো.com/ a/ 47006811 / 1154642 (যা আমার পক্ষে কাজ করেছিল) এর মতো অন্তর্নির্মিত রেল পরীক্ষার কাজগুলি ব্যবহার করে এমন একটি সমাধান বিবেচনা করুন ।
ব্রায়ানব্রাউন

99

একটি পরীক্ষা ফাইল চালান :

rake test TEST=tests/functional/accounts_test.rb

একটি রান একক পরীক্ষা একটি পরীক্ষা ফাইলে:

rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n /paid accounts/"

(@ পুহলজির মন্তব্য থেকে।)


10
এছাড়াও, যদি আপনি প্রদত্ত ফাইলটিতে একটি পরীক্ষা চালাতে চান তবে আপনি একটি টেস্টপটিএস এনভায়রনমেন্ট ভের যোগ করতে পারেন যা পরীক্ষায় উত্তীর্ণ হবে। ইজি রেক টেস্ট TEST = টেস্টস / ফাংশনাল / অ্যাকাউন্টস_স্টে.আরবি TESTOPTS = "- এন / পেইড অ্যাকাউন্টস" "
পহেলজে

1
যদি পরবর্তী পরীক্ষার কমান্ডটি কাজ না করে তবে চেষ্টা করুন rake test TEST=tests/functional/accounts_test.rb TESTOPTS="-n '/paid accounts/'"( /paid accounts/একক উদ্ধৃতি দিয়ে
ঘেরাও

ডকুমেন্টেশন: রুবডোক ইন্টিফো
জেমস


29

@ জেমসকে ধন্যবাদ, উত্তরটি মনে হচ্ছে:

rails test test/models/my_model.rb:22

অনুমান 22 দেওয়া প্রদত্ত পরীক্ষার লাইন নম্বর। রেল অনুসারে সহায়তা:

 $ rails test --help

আপনি একটি ফাইলের নামের মধ্যে একটি লাইন নম্বর যুক্ত করে একটি একক পরীক্ষা চালাতে পারেন:

    bin/rails test test/models/user_test.rb:27

এছাড়াও, দয়া করে নোট করুন যে আপনার পরীক্ষাটি অ্যাকশনডিসপ্যাচ থেকে উত্তরাধিকারী হওয়া উচিত :: এটি কাজ করার জন্য ইন্টিগ্রেশন টেস্ট (এটি আমার ভুল ছিল):

class NexApiTest < ActionDispatch::IntegrationTest
.
.
.

4
কমপক্ষে একটি নির্দিষ্ট রেখার পরীক্ষার জন্য, এটি রেল গাইডগুলির উপর ভিত্তি করে সেরা উত্তর বলে মনে হচ্ছে।
tfantina

12

রেল 5 এ,

আমি একক পরীক্ষার ফাইল চালাতে এই পদ্ধতিটি ব্যবহার করেছি (একটি ফাইলের সমস্ত পরীক্ষা)

rails test -n /TopicsControllerTest/ -v

এখানে https://stackoverflow.com/a/41183694/3626659 দেখুন


1
সাম্প্রতিক রেল সংস্করণগুলির জন্য এটি প্রশ্নের সেরা উত্তর, +1
ব্যবহারকারী000001


3

এটা আমার একটি নির্বোধ মধ্যরাত প্রশ্ন ছিল। রেলগুলি দয়া করে কমান্ডটি প্রিন্ট করে যা এটি কার্যকর করে rake test। বাকিটি একটি কাটা এবং পেস্ট অনুশীলন।

~/projects/rails/actionpack (my2.3.4)$ ruby -I"lib:test" "/usr/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/controller/base_test.rb"


2

যদি আপনি একটি একক পরীক্ষা চালাতে চান তবে আপনি কেবল এগুলিকে নিয়মিত রুবি স্ক্রিপ্ট হিসাবে চালাতে পারেন

ruby actionmailer/test/mail_layout_test.rb

আপনি একটি সম্পূর্ণ স্যুট চালাতে পারেন (উদাহরণস্বরূপ অ্যাক্টিভেকর্ড বা অ্যাকশনমেলার) cdডিরেক্টরিতে প্রবেশ করে এবং rake testসেখানে ভিতরে চলতে ।


1
কারাগারে নেই - অন্তত উত্পন্ন উত্পন্ন ডিফল্ট টেস্ট ফাইলগুলির সাথে নয় not তাদের প্রথম লাইনে "টেস্টহেল্পার" দরকার আছে, তবে লোড পাথটি সময় মতো সেট আপ করা হবে না। আপনি যদি প্রতিটি প্রথম লাইনকে একটি স্পষ্টভাবে প্রয়োজন ("ফাইল.জাইন (ফাইল.ডায়ারনেম ( ফাইল ) প্রয়োজন, '..', 'টেস্ট_হেল্পার')") এ পরিবর্তন করেন তবে আপনার সমাধান কাজ করে।
জেমস এ রোজেন

আহেম, এটিrequire File.join(File.dirname(__FILE__), '..', 'test_helper')
জেমস এ রোজেন

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

2

আমার পরিস্থিতিতে rakeকেবল কাজের জন্য TESTOPTS="-n='/sample/'":

bundle exec rake test TEST=test/system/example_test.rb TESTOPTS="-n='/sample/'"

0

প্রথমে আপনি যে লাইবটি পরীক্ষা করতে চান তার ফোল্ডারে অ্যাক্সেস করুন (এটি গুরুত্বপূর্ণ) এবং তারপরে চালান:

~/Projects/rails/actionview (master)$ ruby -I test test/template/number_helper_test.rb 

0

রেল ফোল্ডার

  bundle install
  bundle exec ruby -I"activerecord/test" activerecord/test/cases/relation/where_test.rb 

নোট করুন আপনার যথাযথ ফোল্ডারটি লোড করতে হবে: "অ্যাক্টিভেকর্ড / পরীক্ষা" (যেখানে আপনার পরীক্ষা রয়েছে)

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