1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rails 7.2, 8.0 と minitest 6 でテストが死ぬ

Last updated at Posted at 2025-12-23

既存の 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

テスト通った!

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?