TestUnit - Rubyのテストコードの書き込み( 1/3 )
ミニシリーズ
学習前奏曲
私は私たちの試験コードを書く方法についての私のジュニア訓練を受けています.私は、すぐにTestUnit、MinitestとRSpecの上でこの前の日曜日に3つのガイドをまとめました.なぜ3つ?私は、変化による学習が完全な知識をもたらすと信じています.
私はこれらの3つの記事を記事に掲載しなければならないと考えました.「そうでない」という記事を掲載するべきです.
私はこれらのガイドのそれぞれに挑戦を書いていた.私は、人々が彼らが欲しいかどうか、わかりません.あなたがそれらを望むならば、私に十分な反応を示してください、そして、下記にコメントしてください.
試験装置
TestUnitは標準のRubyライブラリです.
標準のRubyライブラリでは、GEMをインストールする必要はありません.
TestUnitを使用する最も簡単な例は次の通りです.
アサーション関数
アサーション関数は、すべてのテストライブラリの一部であり、
何かが合格したり失敗します.主張はあなたの“テスト”です.
TestUnitの一部であるすべてのアサーション関数のリストです.
実際には、これらのアサーション関数の一握りを使用します.
断言する
最も基本的なアサーション関数は
関数シグネチャは、関数の入力と出力を定義します.
あなたのための技術的な文書の機能署名を見つけることができます
あなたの言語とライブラリ.の関数シグネチャを見てみましょう
' assert and
断言する
これは boolean -必須です. メッセージ-オプションです そして、
これは、この機能を使用する方法です
フランク
これは メッセージ-デフォルト値が指定されていない場合は そして、
これは、この機能を使用する方法です
あなたは実用的なユーティリティを見つけることができない
テスト単位でのテストの適切な書き方
上の例は、TestUnitを使用するために最も少ない線でしたが、これは正しい方法ではありません.
正しい方法は別のファイルを作成することです.
この新しいテストファイルは、テストを希望するコードを必要とし、TestCaseクラスを作成してテスト関数を作成する必要があります.
ハローワールド
私たちは、それ自身のファイルの中で単純なクラスをつくります
このクラスはクラスメソッド
後で自動化ツールのためにこのコンベンションに固執したいテストファイルがあるとき、あなたは後で見つけます.
DSLは、コード内の言語として動作するようにコードの動作を変更するときです.
Ruby言語は非常に可憐な言語であり、結果としてDSLSを書くのは簡単です.
Rubyコミュニティは、DSLSを参照するときにコードが「magic」であると頻繁に言います.
DSLがどのように明確にされていないかのルールは、共通の混乱につながることができます.
The
このファイルが実行されると、.
この関数は、 テクトナムワールド テストストリンク インスタンス関数は
これはこのDSLの規則の一部です.
テストユニットの思考
これらの他のテストフレームワークは異なったトレードオフを持っていますが、機能性に類似しています.
今後の講演では、両方を調査する予定です
トレードオフを学ぶ.
すべてのフレームワークが使用され、それは最も一般的に使用されていると言うのは難しいです
そしてそれはチームの好みになる.
コード
< div >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/omenking/302ba7e0292cf4bef50287af052a19cb.js//>
< div >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/omenking/3dfd6707f3ac8cc06fdd4f40739d03f7.js//>
< div >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/omenking/037e1d6732fc8f0db7ea5a93d3c26f91.js//>
< div >
< H >
参考文献
<高橋潤子>
< P >https://stackoverflow.com/questions/12317921/why-undefined-method-assert-equal-is-thrown-even-after-requiring-test-unit
https://apidock.com/ruby/Test/Unit/Assertions
https://www.rubydoc.info/gems/test-unit/2.3.0/Test/Unit/Assertions
https://stackoverflow.com/questions/6515333/how-do-i-execute-a-single-test-using-ruby-test-unit
https://mattbrictson.com/minitest-and-rails
私は私たちの試験コードを書く方法についての私のジュニア訓練を受けています.私は、すぐにTestUnit、MinitestとRSpecの上でこの前の日曜日に3つのガイドをまとめました.なぜ3つ?私は、変化による学習が完全な知識をもたらすと信じています.
私はこれらの3つの記事を記事に掲載しなければならないと考えました.「そうでない」という記事を掲載するべきです.
私はこれらのガイドのそれぞれに挑戦を書いていた.私は、人々が彼らが欲しいかどうか、わかりません.あなたがそれらを望むならば、私に十分な反応を示してください、そして、下記にコメントしてください.
試験装置
TestUnitは標準のRubyライブラリです.
標準のRubyライブラリでは、GEMをインストールする必要はありません.
TestUnitを使用する最も簡単な例は次の通りです.
require "test/unit/assertions"
include Test::Unit::Assertions
hello = 'world'
assert_equal 'world', hello, "hello function should return 'world'"
アサーション関数
assert_equal
は多くのアサーション関数の一つです.アサーション関数は、すべてのテストライブラリの一部であり、
何かが合格したり失敗します.主張はあなたの“テスト”です.
TestUnitの一部であるすべてのアサーション関数のリストです.
実際には、これらのアサーション関数の一握りを使用します.
assert
assert_block
assert_boolean
assert_compare
assert_const_defined
assert_empty
assert_equal
assert_fail_assertion
assert_false
assert_in_delta
assert_in_epsilon
assert_include
assert_instance_of
assert_kind_of
assert_match
assert_nil
assert_no_match
assert_not_const_defined
assert_not_empty
assert_not_equal
assert_not_in_delta
assert_not_in_epsilon
assert_not_include
assert_not_match
assert_not_nil
assert_not_predicate
assert_not_respond_to
assert_not_same
assert_not_send
assert_nothing_raised
assert_nothing_thrown
assert_operator
assert_path_exist
assert_path_not_exist
assert_predicate
assert_raise
assert_raise_kind_of
assert_raise_message
assert_raises
assert_respond_to
assert_same
assert_send
assert_throw
assert_throws
assert_true
build_message
flunk
断言する
最も基本的なアサーション関数は
assert
and flunk
.関数シグネチャは、関数の入力と出力を定義します.
あなたのための技術的な文書の機能署名を見つけることができます
あなたの言語とライブラリ.の関数シグネチャを見てみましょう
' assert and
flunk
を定義するRubyDocs .断言する
これは
assert
#assert(boolean, message = nil) ⇒ Object
ここで見るassert
入力に2つのパラメータをとりますObject
.これは、この機能を使用する方法です
# simple.rb
require "test/unit/assertions"
include Test::Unit::Assertions
x = true
assert x, "x should pass"
フランク
これは
flunk
#flunk(message = "Flunked") ⇒ Object
ここで見るflunk
入力に1つのパラメータを指定します.Object
.これは、この機能を使用する方法です
# flunk.rb
require "test/unit/assertions"
include Test::Unit::Assertions
flunk "throw a failure message"
…の目的flunk
常に失敗したテストです.あなたは実用的なユーティリティを見つけることができない
flunk
テスト単位でのテストの適切な書き方
上の例は、TestUnitを使用するために最も少ない線でしたが、これは正しい方法ではありません.
正しい方法は別のファイルを作成することです.
この新しいテストファイルは、テストを希望するコードを必要とし、TestCaseクラスを作成してテスト関数を作成する必要があります.
ハローワールド
私たちは、それ自身のファイルの中で単純なクラスをつくります
hello.rb
.このクラスはクラスメソッド
self.hello
を返します.# hello.rb
class Hello
def self.world
'world2'
end
end
新しいファイルを作成しますhello_test.rb
ファイル名を正確な名前として追加したことに注意してください_test
最後まで.後で自動化ツールのためにこのコンベンションに固執したいテストファイルがあるとき、あなたは後で見つけます.
# hello_test.rb
require "test/unit"
require_relative './hello'
class HelloTest < Test::Unit::TestCase
def test_world
assert_equal 'world', Hello.world, "Hello.world should return a string called 'world'"
end
def test_flunk
flunk "You shall not pass"
end
end
定義されたクラスは通常のクラスではなく、ドメイン固有のラングージ(DSL)です.DSLは、コード内の言語として動作するようにコードの動作を変更するときです.
Ruby言語は非常に可憐な言語であり、結果としてDSLSを書くのは簡単です.
Rubyコミュニティは、DSLSを参照するときにコードが「magic」であると頻繁に言います.
DSLがどのように明確にされていないかのルールは、共通の混乱につながることができます.
The
HelloTest
クラス拡張Test::Unit::TestCase
これは、このクラスをDSLに変える「魔法」です.このファイルが実行されると、.
ruby hello_test.rb
テストの結果を出力します.この関数は、
HelloTest
で始まるクラスtest_
test_
それは実行されません.これはこのDSLの規則の一部です.
テストユニットの思考
TestUnit
Rubyで唯一のテストフレームワークはありませんMiniTest
and Rspec
.これらの他のテストフレームワークは異なったトレードオフを持っていますが、機能性に類似しています.
TestUnit
古い、簡単なテストフレームワークです.今後の講演では、両方を調査する予定です
MiniTest
and Rspec
andトレードオフを学ぶ.
すべてのフレームワークが使用され、それは最も一般的に使用されていると言うのは難しいです
そしてそれはチームの好みになる.
コード
< div >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/omenking/302ba7e0292cf4bef50287af052a19cb.js//>
< div >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/omenking/3dfd6707f3ac8cc06fdd4f40739d03f7.js//>
< div >
< div class ="LagagCount - gig - Link - tag "
"スクリプトのID "https://gist.github.com/omenking/037e1d6732fc8f0db7ea5a93d3c26f91.js//>
< div >
< H >
参考文献
<高橋潤子>
< P >https://stackoverflow.com/questions/12317921/why-undefined-method-assert-equal-is-thrown-even-after-requiring-test-unit
https://apidock.com/ruby/Test/Unit/Assertions
https://www.rubydoc.info/gems/test-unit/2.3.0/Test/Unit/Assertions
https://stackoverflow.com/questions/6515333/how-do-i-execute-a-single-test-using-ruby-test-unit
https://mattbrictson.com/minitest-and-rails
Reference
この問題について(TestUnit - Rubyのテストコードの書き込み( 1/3 )), 我々は、より多くの情報をここで見つけました https://dev.to/exampro/testunit-writing-test-code-in-ruby-part-1-of-3-44m2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol