- ファイルやディレクトリ操作がからむテストでは、必要なファイルやディレクトリはなるべくテストのときに作成する。環境に影響を与えないようする(すでに存在しているファイルの変更や消去を避ける手立て。作ったファイルの後片付け)。あらかじめ用意したファイルを使う場合はファイルパスの指定に気をつける(カレントディレクトリと相対パスの対応など)。
- 浮動小数点数の比較は相対誤差で判定する。
require 'fileutils' require 'minitest/unit' require 'tmpdir' MiniTest::Unit.autorun class TestFileutils < MiniTest::Unit::TestCase def setup @ori_dir = Dir.pwd @sandbox = Dir.mktmpdir Dir.chdir @sandbox end def test_cp_r_preserve FileUtils.mkdir("tmp_src") FileUtils.touch("tmp_src/a") File::utime(Time.local(2000, 1, 1, 22, 0, 0), Time.local(2000, 1, 1, 22, 0, 0), "tmp_src") FileUtils.cp_r("tmp_src", "tmp_dest", :preserve => true) assert_equal(File.stat("tmp_src").mtime, File::stat("tmp_dest").mtime) end def teardown Dir.chdir @ori_dir FileUtils.rm_r @sandbox end end class TestMiniTest < MiniTest::Unit::TestCase def test_assert_in_epsilon assert_in_epsilon -1.001, -1.0 end end
(追記: バグは修正されていた
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/fileutils.rb?r1=39011&r2=39015
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/minitest/unit.rb?r1=33815&r2=35541)