Как запустить собственный список минитест-тестов в Rails

Скажем, у меня есть файл, содержащий имена тестовых файлов для запуска тестов, и он также может содержать конкретные имена тестов. Если тестовый файл содержит этот конкретный тест, запустите только этот тест из файла, содержащего тест, и запустите все тесты из других тестовых файлов.

Я использую Codebuild для запуска тестов для нашего приложения, но Codebuild не позволяет запускать только определенные тесты. Поэтому я заменяю тестовую команду bin/rails в codebuild нашей пользовательской задачей rake. Эта задача rake проверит файл в нашей системе, содержащий список тестов для запуска, и если он найдет файл, он запустит только те тесты, которые другие обычные тесты bin/rails


person Mohsin Sethi    schedule 14.05.2019    source источник
comment
По крайней мере, в RSPEC вы можете определить группы тестов, которые затем можно вызывать при запуске bundle exec rspec, я уверен, что Minitest имеет сопоставимую функциональность.   -  person bo-oz    schedule 14.05.2019
comment
Кажется, есть отдельный гем, который позволяет вам устанавливать теги... это позволит вам запускать только выбранные тесты. Я думаю, что это более предпочтительный подход к использованию списков тестов в файле: stackoverflow.com/questions/51913064/   -  person bo-oz    schedule 14.05.2019
comment
Я думаю, что файл является более предпочтительным подходом, так как для запуска всех тестов все, что нам нужно сделать, это сделать файл пустым. Поиск и удаление тегов добавит дополнительных усилий, когда мы хотим запустить все тесты.   -  person Mohsin Sethi    schedule 14.05.2019
comment
Ну, вы всегда можете создать bash-скрипт, который перебирает файл и запускает мини-тесты для записей.   -  person bo-oz    schedule 14.05.2019
comment
Это будет запускать несколько RAILS_ENV=test rails test, которые в результате будут иметь несколько выходов, тогда как я хочу, чтобы решение запускало только 1 RAILS_ENV=test rails test, чтобы у меня был 1 стандартный вывод минитеста в конце, например. пройдено: 123, не пройдено: 123 и так далее   -  person Mohsin Sethi    schedule 14.05.2019
comment
rails test принимает в качестве аргумента список имен файлов или шаблон. Посетите github.com/ рельсы/рельсы/blob/5-2-stable/railties/lib/rails/   -  person max    schedule 14.05.2019
comment
Действительно... и объедините это со скриптом bash, и вуаля!   -  person bo-oz    schedule 14.05.2019


Ответы (1)


Вы можете скопировать то, как рельсы уже определяют свои задачи, например test:system здесь:

namespace :test do
  desc "Run tests from file"
  task from_file: "test:prepare" do
    $: << "test"

    Rails::TestUnit::Runner.rake_run(
      File.read(Rails.root.join("tests_to_run.txt")).lines.map(&:chomp)
    )
  end
end
$ bundle exec rails test:from_file
person Gray Kemmey    schedule 19.09.2020