LoginSignup
1
1

More than 1 year has passed since last update.

[Rails][test] プロンプトのプログレスバーがうまく動かない場合の対処

Posted at

Railsチュートリアルで行うテストでは、Gemのminitestとminitest-reportersを使います。
私の環境はWindows11で、ローカルで作業をしています。プロンプトはコマンドプロンプトを使っています。

  • OS: windows11
  • prompt: cmd
  • Rails
  • Gem: minitest
  • Gem: minitest-reporters

minitest-reportersを使えば、Green/Redがわかりやすくなっていいのですが、私の環境ではプログレスバーの表示がおかしくなっていました。
本来1つであるプログレスバーがGreen/Redにかかわらず、テストの個数に応じて複数表示されてしまいます。

たぶんこんな表示になるはず。
5/10[=====.....]
          ^ ここだけが進んでいくはず。


私の環境でのプログレスバー
1/10[=.........]
2/10[==........]
3/10[===.......]
4/10[====......]
5/10[=====.....]
プログレスバーがいっぱい出てくる。

あまりこのような現象になることはないかもしれませんが、私が行った対策を記します。

minitest-reportersの設定

test/test_helper.rbにminitest-reportersの設定を書いていると思います。
そこにMinitest::Reporters::DefaultReporter.newを追記しました。

test/test_helper.rb
# 修正前
require "minitest/reporters"
Minitest::Reporters.use!

# 修正後
require "minitest/reporters"
Minitest::Reporters.use! Minitest::Reporters::DefaultReporter.new
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                           ここを追記

結論としてはこれでプログレスバーが複数出ることはなく、見やすい表示になりました。

他にもいろいろ

test_helper.rbのMinitest::Reporters.use!の後に、
Minitest::Reporters::DefaultReporter.newを付ければ表示方法を変えてくれるようですが、
Minitest::Reporters::DefaultReporter.newのDefaultReporterの箇所は他にもあるようです。

  • DefaultReporter
  • SpecReporter
  • ProgressReporter
  • RubyMateReporter
  • RubyMineReporter
  • MeanTimeReporter
  • JUnitReporter

自分にあったものを探してみると面白そうです。

おわり

これで一画面にテスト結果が表示されるようになりました。テストがより楽しくなりますね。
私の目的は複数表示されてしまうプログレスバーを何とかすることなのでこれ以上深入りはしていませんが、下記のリンクではさらに詳しく書かれていますので参考になさってください。

下記のように複数指定することも可能とのことです。

test/test_helper.rb
Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new, Minitest::Reporters::JUnitReporter.new]

ブロックでの設定も可能なようです。

test/test_helper.rb
Minitest::Reporters.use!(
  Minitest::Reporters::DefaultReporter.new,
  ENV,
  Minitest.backtrace_filter
)

細かい設定はしておりませんし、英語のサイトをなんとなしに読んだ結果なので、間違いがあるかもしれません。
お気づきの点がありましたらコメント等でご指摘いただければ幸いです。

1
1
0

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