Reputation: 37329
I need to run code before each test in all my tests in MiniTest.
Before I did:
MiniTest::Unit::TestCase.add_setup_hook do
...code to run before each test
end
After I upgraded MiniTest to version 4.7.2 it shows the following error:
undefined method `add_setup_hook' for MiniTest::Unit::TestCase:Class (NoMethodError)
I am using Ruby MRI 2.0.0p0.
SOLUTION
module MyMinitestPlugin
def before_setup
super
# ...code to run before all test cases
end
def after_teardown
# ... code to run after all test cases
super
end
end
class MiniTest::Unit::TestCase
include MyMinitestPlugin
end
Upvotes: 10
Views: 7104
Reputation: 482
If using MiniTest, you can set that in test/test_helper.rb
:
class ActiveSupport::TestCase
...
setup do
...code to run before each test
end
end
Upvotes: 2
Reputation: 3454
Update 2019
Don't write a plugin for this, plugins are intended for gems which extend Minitest functionality, not for test authors.
If you write Minitest Specs, you can do the following instead:
class Minitest::Spec
before :each do
[do stuff]
end
end
Upvotes: -2
Reputation: 8482
add_setup_hook
was removed in 4.6.0.
https://github.com/seattlerb/minitest/commit/792a480ebeb32983b9150adae575b7c396e2ae63
Use before_setup
instead.
Upvotes: 6