#17: チェリー本 3 章、テストライブラリについて
やったこと(Done)
- チェリー本を 10 章まで、ざっと眺めた。
- 3 章の fizzbuzz のテストを書くところを写経した。
- Windows マシンにも Ruby をインストールした。
- Windows で単純なキー入力を繰り返す作業が発生したので、
win32ole
を使って Ruby から入力させるスクリプトを書いた。- グローバル変数を使うなとか、メソッドが長いとか、rubocop に色々指摘された。
わかったこと(Fact)
require
のパス解釈
最初、テストコードの方で require './lib/fizzbuzz.rb'
となるのが説明文を読んでも理解できなかった。
というのは $ ruby foo.rb
というコマンドを実行しているディレクトリのこと。
例えば、以下のディレクトリ構造だとすると、
ruby-book/
├── lib
│ └── fizzbuzz.rb
└── test
└── fizzbuzz_test.rb
今 ruby-book
にいて $ ruby test/fizzbuzz_test.rb
と実行する場合は ruby-book
から見ると lib
と test
はカレントディレクトリにあるので、fizzbuzz_test.rb
は
require './lib/fizzbuzz.rb'
となる。
もし test
ディレクトリにいて $ ruby fizzbuzz_test.rb
とする場合は
require '../lib/fizzbuzz.rb'
となる。
テストライブラリ
Minitest
もtest-unit
も標準添付されている。test-unit
は xUnit ベースとのこと。
自分は .NET で xUnit を利用することがあるので、この 2 つのうちから選択するときは test-unit
の方を使っていこう。
標準添付されているライブラリ
3 種類あるらしい。
- ただの標準添付ライブラリ
- default gem
- bundled gem
詳しくは下記の記事を参照のこと。
参考文献(References)
- test-unit - Ruby用単体テストフレームワーク
- Rubyのテスティングフレームワークの歴史(2014年版) - ククログ(2014-11-06)
- Ruby用単体テストフレームワークtest-unitでのデータ駆動テストの紹介 - ククログ(2013-01-23)
- Ruby 2.6.0とtest-unitとデータ駆動テスト - ククログ(2018-12-26)
- Ruby標準のテスティングフレームワークで手軽にテストコードを書く方法 - Qiita