Spec-Zone.ru › Ruby / Minitest

class Minitest::Runnable

Родитель:
Объект

Представляет собой всё, что «можно выполнить», например, Test, Spec, Benchmark, или что-нибудь ещё, что вы можете придумать.

Подклассы этого автоматически регистрируются и доступны в Runnable.runnables.

Атрибуты

assertions [RW]

Количество утверждений, выполненных в этом запуске.

failures [RW]

Утверждение, вызвавшее ошибку во время запуска, если таковое имеется.

metadata [W]

Устанавливает метаданные, в основном используемые для Result.from.

time [RW]

Время, затраченное на запуск.

Публичные методы класса

methods_matching (re)
Исходный код
# File lib/minitest.rb, line 390
def self.methods_matching re
  public_instance_methods(true).grep(re).map(&:to_s)
end

Возвращает все методы экземпляров, соответствующие шаблону re.

run (reporter, options = {})
Исходный код
# File lib/minitest.rb, line 405
def self.run reporter, options = {}
  pos = options[:filter]
  neg = options[:exclude]

  pos = Regexp.new $1 if pos.kind_of?(String) && pos =~ %r%/(.*)/%
  neg = Regexp.new $1 if neg.kind_of?(String) && neg =~ %r%/(.*)/%

  filtered_methods = self.runnable_methods
    .select { |m| !pos ||  pos === m || pos === "#{self}##{m}"  }
    .reject { |m|  neg && (neg === m || neg === "#{self}##{m}") }

  return if filtered_methods.empty?

  t0 = name = nil

  @_info_handler = lambda do
    unless reporter.passed? then
      warn "Current results:"
      warn reporter.reporters.grep(SummaryReporter).first
    end

    warn "Current: %s#%s %.2fs" % [self, name, Minitest.clock_time - t0]
  end

  with_info_handler reporter do
    filtered_methods.each do |method_name|
      name = method_name
      t0 = Minitest.clock_time

      run_one_method self, method_name, reporter
    end
  end
end

Отвечает за запуск всех методов, которые можно выполнить в данном классе, каждый в собственном экземпляре. Каждый экземпляр передается репортеру для записи.

run_one_method (klass, method_name, reporter)
Исходный код
# File lib/minitest.rb, line 445
def self.run_one_method klass, method_name, reporter
  reporter.prerecord klass, method_name
  reporter.record Minitest.run_one_method(klass, method_name)
end

Выполняет один метод и заставляет репортер записывать результат. Это считалось внутренней API, но выделено из run, чтобы подклассы могли специализироваться на выполнении отдельного теста. См. Minitest::ParallelTest::ClassMethods для примера.

runnable_methods ()
Исходный код
# File lib/minitest.rb, line 481
def self.runnable_methods
  raise NotImplementedError, "subclass responsibility"
end

Каждый подкласс Runnable отвечает за переопределение этого метода, чтобы вернуть все исполняемые методы. См. методы_соответствия.

runnables ()
Исходный код
# File lib/minitest.rb, line 488
def self.runnables
  @@runnables
end

Возвращает все подклассы Runnable.

test_order ()
Исходный код
# File lib/minitest.rb, line 454
def self.test_order
  :random
end

Определяет порядок выполнения тестов (:случайный по умолчанию). Переопределите его или используйте удобный метод для изменения его для ваших тестов.

Публичные методы экземпляров

metadata ()
Исходный код
# File lib/minitest.rb, line 527
def metadata
  @metadata ||= {}
end

Метаданные, которые вы добавляете к результатам теста, отправляемым репортеру.

Лениво инициализируется в виде хэша для экономии памяти.

ПРИМЕЧАНИЕ: эти данные должны быть простыми (читай: маршалируемыми) данными! Хэши! Массивы! Строки!

metadata? ()
Исходный код
# File lib/minitest.rb, line 539
def metadata?
  defined? @metadata
end

Возвращает true, если метаданные существуют.

name ()
Исходный код
# File lib/minitest.rb, line 376
def name
  @NAME
end

Имя запуска.

name= (o)
Исходный код
# File lib/minitest.rb, line 383
def name= o
  @NAME = o
end

Установите имя запуска.

passed? ()
Исходный код
# File lib/minitest.rb, line 556
def passed?
  raise NotImplementedError, "subclass responsibility"
end

Этот запуск прошёл успешно?

Примечание: пропущенные запуски не считаются прошедшими, но они не приводят к выходу процесса с ненулевым кодом.

result_code ()
Исходный код
# File lib/minitest.rb, line 565
def result_code
  raise NotImplementedError, "subclass responsibility"
end

Возвращает строку с одним символом для печати на основе результата выполнения. Один из ".", "F", "E" или "S".

run ()
Исходный код
# File lib/minitest.rb, line 546
def run
  raise NotImplementedError, "subclass responsibility"
end

Выполняет один метод. Должен вернуть self.

skipped? ()
Исходный код
# File lib/minitest.rb, line 572
def skipped?
  raise NotImplementedError, "subclass responsibility"
end

Был ли этот запуск пропущен? См. passed? для получения дополнительной информации.

© Ryan Davis, seattle.rb
Licensed under the MIT License.
https://docs.seattlerb.org/minitest/Minitest/Runnable.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API