#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










トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS