Who the hell thought that Pokémon error handling is good solution? What I mean? See the difference:

RSpec

FF

Failures:

  1) RSpec test fails
     Failure/Error: expect(2).to == 3
     ArgumentError:
       The expect syntax does not support operator matchers, so you must pass a matcher to `#to`.
     # ./rspec.rb:3:in `block (2 levels) in <top (required)>'

  2) RSpec test is error
     Failure/Error: 'lol' + 3
     TypeError:
       no implicit conversion of Fixnum into String
     # ./rspec.rb:7:in `+'
     # ./rspec.rb:7:in `block (2 levels) in <top (required)>'

Finished in 0.00133 seconds (files took 0.15476 seconds to load)
2 examples, 2 failures

Failed examples:

rspec ./rspec.rb:2 # RSpec test fails
rspec ./rspec.rb:6 # RSpec test is error

MiniTest

Run options: --seed 51098

# Running:

EF

Finished in 0.002406s, 831.1025 runs/s, 415.5513 assertions/s.

  1) Error:
MiniTest test#test_0002_is error:
TypeError: no implicit conversion of Fixnum into String
    minitest.rb:10:in `+'
    minitest.rb:10:in `block (2 levels) in <main>'


  2) Failure:
MiniTest test#test_0001_fails [minitest.rb:6]:
Expected: 2
  Actual: 3

2 runs, 1 assertions, 1 failures, 1 errors, 0 skips

See the difference? MiniTest inform you that test is failure only if any of the assertions fails, if it is the syntax error or uncatched exception then it is marked as an error. RSpec tell you that both are failure.

PS

Test(ing) files was:

RSpec

describe 'RSpec test' do
  it 'fails' do
    expect(2).to == 3
  end

  it 'is error' do
    'lol' + 3
  end
end

and MiniTest

require 'minitest/spec'
require 'minitest/autorun'

describe 'MiniTest test' do
  it 'fails' do
    3.must_equal 2
  end

  it 'is error' do
    'lol' + 3
  end
end

PPS

To not be so hateful about RSpec I must say that I would prefer expect syntax in MiniTest instead of must_*. It is much more clean and doesn't involve Monkey patching Object.