यह काफी हद तक स्वाद की बात है, और उनके नमक समर्थन मूल्य के अधिकांश परीक्षण उपकरण दोनों। मेरी व्यक्तिगत पसंद टेस्ट :: यूनिट पर RSpec के लिए है क्योंकि ए) परीक्षण का आउटपुट और लेआउट इस बात पर ध्यान केंद्रित करता है कि परीक्षण के तहत वस्तु को क्या करना है (जैसा कि कोड क्या है के विपरीत) और बी) 'एक्स वाई' कहना चाहिए। मुझसे अधिक समझ में आता है कि 'एक्स की भविष्यवाणी करें' वाई।
ऊपर दिए गए बिंदुओं के लिए आपको कुछ संदर्भ देने के लिए, दो कार्यात्मक समकक्ष इकाई परीक्षणों के आउटपुट / स्रोत कोड की तुलना (यहाँ बहुत ही वंचित) की गई है, एक RSpec का उपयोग करते हुए लिखा गया है और दूसरा टेस्ट :: यूनिट का उपयोग करते हुए।
परीक्षण के तहत कोड
class DeadError < StandardError; end
class Dog
def bark
raise DeadError.new "Can't bark when dead" if @dead
"woof"
end
def die
@dead = true
end
end
टेस्ट :: यूनिट
require 'test/unit'
require 'dog'
class DogTest < Test::Unit::TestCase
def setup
@dog = Dog.new
end
def test_barks
assert_equal "woof", @dog.bark
end
def test_doesnt_bark_when_dead
@dog.die
assert_raises DeadError do
@dog.bark
end
end
end
RSpec
require 'rspec'
require 'dog'
describe Dog do
before(:all) do
@dog = Dog.new
end
context "when alive" do
it "barks" do
@dog.bark.should == "woof"
end
end
context "when dead" do
before do
@dog.die
end
it "raises an error when asked to bark" do
lambda { @dog.bark }.should raise_error(DeadError)
end
end
end
टेस्ट :: यूनिट आउटपुट (जितना मैं इसे बना सकता था)
Ξ code/examples → ruby dog_test.rb --verbose
Loaded suite dog_test
Started
test_barks(DogTest): .
test_doesnt_bark_when_dead(DogTest): .
Finished in 0.004937 seconds.
RSpec आउटपुट (दस्तावेज़ीकरण फ़ॉर्मेटर)
Ξ code/examples → rspec -fd dog_spec.rb
Dog
when alive
barks
when dead
raises an error when asked to bark
Finished in 0.00224 seconds
2 examples, 0 failures
2 tests, 2 assertions, 0 failures, 0 errors
पीएस मुझे लगता है कि बेरिन (पिछले उत्तरदाता) ककड़ी की भूमिकाओं को स्वीकार कर रहा है (जो कि आरएसपीईसी परियोजना से बाहर हो गई लेकिन स्वतंत्र है) और आरएसपीईसी। ककड़ी एक BDD शैली में स्वचालित स्वीकृति परीक्षण के लिए एक उपकरण है, जबकि RSpec परीक्षण के लिए एक कोड लाइब्रेरी है जो इकाई, एकीकरण और कार्यात्मक स्तरों पर उपयोग किया जा सकता है, और है। इसलिए RSpec का उपयोग इकाई परीक्षण को रोकता नहीं है - यह सिर्फ इतना है कि आप अपनी इकाई परीक्षणों को 'चश्मा' कहते हैं।