#author("2017-10-06T16:11:12+09:00","default:wikiwriter","wikiwriter") #author("2017-10-17T13:34:12+09:00","default:wikiwriter","wikiwriter") &tag(Ruby/ユニットテスト); *目次 [#meb1c35e] #contents *参考情報 [#ac9c5830] -[[Test::Unit - Rubyリファレンスマニュアル:http://www.ruby-lang.org/ja/old-man/html/Test_Unit.html]] *テスティングフレームワークの歴史 [#d9101f45] -[[Ruby標準のテスティングフレームワークで手軽にテストコードを書く方法 - Qiita:https://qiita.com/jnchito/items/ff4f7a23addbd8dbc460]]にあるとおり、かなりややこしい。 --1.9.0以前はTest::Unitが標準 --1.9.1から2.1まではMinitestが標準 --2.2以降はMinitest 5.4.3とTest::Unit 3.0.8が標準 -Test::Unitは"test-unit"という名前が正しい?またMinitestはTest::Unit互換モードもあったりする。 -[[A Guide to Testing Rails Applications — Ruby on Rails Guides:http://guides.rubyonrails.org/testing.html]]によるとRailsはMinitestが標準。 *test-unitの使用方法 [#r783578c] -[[File: how-to — test-unit - test-unit:https://test-unit.github.io/test-unit/ja/file.how-to.html]] -[[ゲームっぽい何かを作りながらRubyを勉強する その1 〜ディレクトリ構成とかtest-unitとかRakeとか〜 - Qiita:https://qiita.com/chooyan_eng/items/c85466d0a744161a5a2e]] **テストの実行 [#bee43f38] -Rakefileを使ったり、実行用のスクリプトを作成する方法がある。 -以下のようなスクリプトを作成し、 #pre{{ base_dir = File.expand_path(File.join(File.dirname(__FILE__), "..")) lib_dir = File.join(base_dir, "lib") test_dir = File.join(base_dir, "test") $LOAD_PATH.unshift(lib_dir) require 'test/unit' exit Test::Unit::AutoRunner.run(true, test_dir) }} -次のように実行する。 $ ruby test/run_test.rb **テストケースやテスト名の指定 [#u8b6df14] -Test::Unit::AutoRunner.runの3番目の引き数はargvとなっていて、シェルなどからそのままコマンドラインオプションを指定できる。[[class Test::Unit::AutoRunner (Ruby 1.8.7):https://docs.ruby-lang.org/ja/1.8.7/class/Test=3a=3aUnit=3a=3aAutoRunner.html]] -以下の通りのオプションが指定可能。 #pre{{ -r, --runner=RUNNER Use the given RUNNER. (c[onsole], f[ox], g[tk], g[tk]2, t[k]) -b, --basedir=DIR Base directory of test suites. -w, --workdir=DIR Working directory to run tests. -n, --name=NAME Runs tests matching NAME. (patterns may be used). -t, --testcase=TESTCASE Runs tests in TestCases matching TESTCASE. (patterns may be used). -v, --verbose=[LEVEL] Set the output level (default is verbose). (s[ilent], p[rogress], n[ormal], v[erbose]) -- Stop processing options so that the remaining options will be passed to the test. -h, --help Display this help. }} -テストケースを指定する場合。--testcaseオプションにテストケースのクラス名を指定する。正規表現も可能 $ ruby test/run_test.rb --testcase=TestSome -実行するテストを指定。 $ ruby test/run_test.rb --testcase=TestSome --name=test_format