Before / After Suite при использовании Ruby MiniTest
есть ли альтернатива для RSpec-это before(:suite)
и after(:suite)
в MiniTest?
Я подозреваю, что пользовательский тестовый бегун в порядке, однако я не могу себе представить, что это не общее требование, поэтому кто-то, вероятно, реализовал. :-)
8 ответов
здесь setup()
и teardown()
методы. В документации также перечислены before()
и after()
как доступные.
Edit: вы хотите запустить что-то перед каждым тестом или до или после завершения всего набора?
как отмечалось выше в ответе и комментариях Кейли,MiniTest::Unit
содержит функцию after_tests
. Нет before_tests
или эквивалент, но любой код minitest_helper.rb
файл должен быть запущен перед набором тестов, так что будет делать офис такой функции.
предостережение: все еще относительно новый в Ruby, и очень новый в Minitest, так что если я ошибаюсь,пожалуйста поправьте меня! :-)
чтобы заставить это работать с текущей версией Minitest (5.0.6), вам нужно require 'minitest'
и использовать Minitest.after_run { ... }
.
warn "MiniTest::Unit.after_tests is now Minitest.after_run. ..."
https://github.com/seattlerb/minitest/blob/master/lib/minitest.rb https://github.com/seattlerb/minitest/blob/master/lib/minitest/unit.rb
один простой способ сделать это-написать метод защищенного класса, а затем вызвать это в begin
.
Minitest:: Spec пример:
describe "my stuff" do
def self.run_setup_code
if @before_flag.nil?
puts "Running the setup code"
@before_flag = true
end
end
before do
self.class.run_setup_code
end
it "will only run the setup code once" do
assert_equal 1, 1
end
it "really only ran it once" do
assert_equal 1,1
end
end
...чтобы получить
Run options: --seed 11380
# Running:
Running the setup code
..
Finished in 0.001334s, 1499.2504 runs/s, 1499.2504 assertions/s.
2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
хорошая вещь о minitest-это его гибкость. Я использую пользовательский Minitest Runner с+ before_suite + обратный вызов. Что - то вроде в этом примере -Ruby Minitest: настройка уровня класса или класса?
а затем скажите minitest использовать пользовательский runner
MiniTest::Unit.runner = MiniTestSuite::Unit.new
вы также можете добавить обратный вызов после теста, обновив test_helper.rb (или spec_helper.rb) вот так
# test_helper.rb
class MyTest < Minitest::Unit
after_tests do
# ... after test code
end
end
вы можете просто поместить код вне класса.
Это то, что я делаю, чтобы иметь баннер.
require 'selenium-webdriver'
require 'minitest/test'
require 'minitest/autorun'
class InstanceTest < Minitest::Test
def setup
url = ARGV.first
@url = self.validate_instance(url)
@driver = Selenium::WebDriver.for :firefox
end