класс ActiveSupport::TestCase
Константы
- Assertion
Общедоступные методы класса
# File activesupport/lib/active_support/test_case.rb, line 122
Возвращает коллекцию ActiveRecord::FixtureSet.
В вашем test_helper.rb должен быть require "rails/test_help".
# File activesupport/lib/active_support/test_case.rb, line 128
Устанавливает заданный путь к набору фикстур.
Также можно добавить несколько путей.
ActiveSupport::TestCase.fixture_paths << "component1/test/fixtures"
В вашем test_helper.rb должен быть require "rails/test_help".
# File activesupport/lib/active_support/test_case.rb, line 81 def parallelize(workers: :number_of_processors, with: :processes, threshold: ActiveSupport.test_parallelization_threshold) workers = Concurrent.processor_count if workers == :number_of_processors workers = ENV["PARALLEL_WORKERS"].to_i if ENV["PARALLEL_WORKERS"] Minitest.parallel_executor = ActiveSupport::Testing::ParallelizeExecutor.new(size: workers, with: with, threshold: threshold) end
Параллелизует набор тестов.
Принимает аргумент workers, который управляет тем, сколько раз процесс будет дублирован. Для каждого процесса будет создана новая база данных, дополненная номером потока.
test-database-0 test-database-1
Если ENV["PARALLEL_WORKERS"] задано, аргумент workers будет проигнорирован, и вместо него будет использована переменная окружения. Это полезно для сред CI или других сред, где может потребоваться больше потоков, чем для локального тестирования.
Если количество потоков установлено в 1 или меньше, тесты не будут параллелизованы.
Если workers установлено в :number_of_processors, количество потоков будет установлено в фактическое количество ядер на вашем компьютере.
По умолчанию используется метод параллелизации с помощью создания процессов. Если вы хотите использовать потоки вместо этого, вы можете передать with: :threads методу parallelize. Обратите внимание, что параллелизация с помощью потоков не создаёт несколько баз данных и не будет работать с системными тестами.
parallelize(workers: :number_of_processors, with: :threads)
Параллелизация с помощью потоков напрямую использует параллельный планировщик Minitest. Параллелизация с помощью процессов использует сервер Ruby DRb.
Поскольку параллелизация создаёт избыточные вычисления, она включается только тогда, когда количество выполняемых тестов превышает параметр threshold. Значение по умолчанию составляет 50, и его можно настроить через config.active_support.test_parallelization_threshold.
# File activesupport/lib/active_support/test_case.rb, line 101 def parallelize_setup(&block) ActiveSupport::Testing::Parallelization.after_fork_hook(&block) end
Установка хука для параллельного тестирования. Это может быть использовано, если у вас есть несколько баз данных или любое поведение, которое должно выполняться после создания процесса, но до запуска тестов.
Примечание: эта функция недоступна с помощью параллелизации с использованием потоков.
В вашем test_helper.rb добавьте следующее:
class ActiveSupport::TestCase
parallelize_setup do
# create databases
end
end
# File activesupport/lib/active_support/test_case.rb, line 118 def parallelize_teardown(&block) ActiveSupport::Testing::Parallelization.run_cleanup_hook(&block) end
Функция очистки для параллельного тестирования. Это может использоваться для удаления баз данных, если ваше приложение использует несколько баз данных для чтения/записи, или для другой очистки перед завершением тестов. Выполняется перед закрытием разветвлённого процесса.
Примечание: эта функция недоступна с помощью параллелизации с использованием потоков.
В вашем test_helper.rb добавьте следующее:
class ActiveSupport::TestCase
parallelize_teardown do
# drop databases
end
end
# File activesupport/lib/active_support/test_case.rb, line 44 def test_order ActiveSupport.test_order ||= :random end
Возвращает порядок, в котором выполняются тестовые случаи.
ActiveSupport::TestCase.test_order # => :random
Возможные значения: :random, :parallel, :alpha, :sorted. По умолчанию :random.
# File activesupport/lib/active_support/test_case.rb, line 34 def test_order=(new_order) ActiveSupport.test_order = new_order end
Устанавливает порядок, в котором выполняются тестовые случаи.
ActiveSupport::TestCase.test_order = :random # => :random
Допустимые значения:
-
:random(для запуска тестов в случайном порядке) -
:parallel(для запуска тестов параллельно) -
:sorted(для запуска тестов в алфавитном порядке по имени метода) -
:alpha(эквивалентно:sorted)
Публичные методы экземпляра
# File activesupport/lib/active_support/test_case.rb, line 233
Псевдоним для: refute_match
# File activesupport/lib/active_support/test_case.rb, line 156
Псевдоним для: refute_empty
# File activesupport/lib/active_support/test_case.rb, line 167
Псевдоним для: refute_equal
# File activesupport/lib/active_support/test_case.rb, line 178
Псевдоним для: refute_in_delta
# File activesupport/lib/active_support/test_case.rb, line 189
Псевдоним для: refute_in_epsilon
# File activesupport/lib/active_support/test_case.rb, line 200
Псевдоним для: refute_includes
# File activesupport/lib/active_support/test_case.rb, line 211
Псевдоним для: refute_instance_of
# File activesupport/lib/active_support/test_case.rb, line 222
Псевдоним для: refute_kind_of
# File activesupport/lib/active_support/test_case.rb, line 244
Псевдоним для: refute_nil
# File activesupport/lib/active_support/test_case.rb, line 255
Псевдоним для: refute_operator
# File activesupport/lib/active_support/test_case.rb, line 266
Псевдоним для: refute_predicate
# File activesupport/lib/active_support/test_case.rb, line 277
Псевдоним для: refute_respond_to
# File activesupport/lib/active_support/test_case.rb, line 288
Псевдоним для: refute_same
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.