既存の Rails 7.2 アプリで,bundle update したら minitest のバージョンが 5.27.0 → 6.0.0 と上がり,テストが通らなくなった。
(追記)以下の記述は 7.2 に基づくが,記事投稿後に Rails 8.0.4 で試したら同様の結果であった。
Rails 8.1.1 だと,テストが認識されなかった(何も起こらない)。
環境:
- ruby 3.4.8 (2025-12-17 revision 995b59f666) +PRISM [arm64-darwin25]
- Rails 7.2.3
再現
以下で中身がほとんどない Rails アプリを作る。
$ rails new hoge
$ cd hoge
$ rails g model item name
$ rails db:migrate
全てデフォルトなので,テストライブラリーには minitest が使われる。
Gemfile には minitest が記述されていないので,今日(2025/12/23)時点だと,minitest のバージョンは最新版の 6.0.0 になる。
Item モデルのテストコード test/models/item_test.rb は
require "test_helper"
class ItemTest < ActiveSupport::TestCase
# test "the truth" do
# assert true
# end
end
のように生成されている。
中身の 3 行をアンコメントする:
require "test_helper"
class ItemTest < ActiveSupport::TestCase
test "the truth" do
assert true
end
end
これで
$ rails test
すると,以下のようにエラーが出る。
Running 1 tests in a single process (parallelization threshold is 50)
Run options: --seed 64377
# Running:
/Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/railties-7.2.3/lib/rails/test_unit/line_filtering.rb:7:in 'run': wrong number of arguments (given 3, expected 1..2) (ArgumentError)
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:467:in 'block (2 levels) in Minitest::Runnable.run_suite'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:463:in 'Array#each'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:463:in 'block in Minitest::Runnable.run_suite'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:505:in 'Minitest::Runnable.on_signal'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:492:in 'Minitest::Runnable.with_info_handler'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:462:in 'Minitest::Runnable.run_suite'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:355:in 'block in Minitest.run_all_suites'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:355:in 'Array#map'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:355:in 'Minitest.run_all_suites'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:310:in 'Minitest.run'
from /Users/XXXXX/.rbenv/versions/3.4.8/lib/ruby/gems/3.4.0/gems/minitest-6.0.0/lib/minitest.rb:84:in 'block in Minitest.autorun'
minitest のバージョンを下げると
Gemfile の test グループのところにあらわに minitest を記述し,バージョンを 6 未満としてみる:
group :test do
# 云々
gem "minitest", "<6"
end
これだと minitest のバージョンは 5.27.0 になった。
そして
$ bundle up
$ rails test
Running 1 tests in a single process (parallelization threshold is 50)
Run options: --seed 34385
# Running:
.
Finished in 0.039675s, 25.2048 runs/s, 25.2048 assertions/s.
1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
テスト通った!