Протестируйте определенную группу тестовых случаев с помощью rake testtask

Некоторые тесты требуют подключения к Интернету, а некоторые нет. Поэтому они разделены на две тестовые группы с разными шаблонами имен файлов. Как обновить Rakefile ниже, чтобы их можно было запускать отдельно с разными задачами rake?

Кажется, вопрос/ответ здесь не помогает Это дело.

А приведенный ниже rakefile запускает все тестовые случаи независимо от того, какие задачи rake вызываются в командной строке. Ни rake test, ни rake itest не работают должным образом.

Текущее содержимое Rakefile:

require 'rake/testtask'

Rake::TestTask.new do |t|
  t.test_files = FileList['test/test_*.rb']
end

Rake::TestTask.new do |t|
  t.test_files = FileList['test/itest_*.rb']
end

desc "Run tests with no internet required"
task :default => :test

desc "Run tests need internet connection"
task :internet => :test

person canoe    schedule 16.12.2013    source источник
comment
Тесты, требующие подключения к Интернету, скорее всего, являются неуместными интеграционными тестами, а не модульными тестами. Модульные тесты должны тестировать только один модуль, поэтому тестирование кода, который подключается к Интернету, а также приложения на другой стороне соединения выходит далеко за рамки модульного тестирования. Я бы издевался над удаленными запросами в модульных тестах и ​​перемещал все остальное (требующее межсетевого взаимодействия) в отдельный пакет интеграции. Тогда их легко запускать по отдельности.   -  person Patrick Oscity    schedule 16.12.2013
comment
Я с тобой согласен. Я обновил вопрос, чтобы отразить усилия, которые я пытался достичь цели, но я все еще не могу этого сделать. Комментарии?   -  person canoe    schedule 17.12.2013


Ответы (1)


Я понял, как связать разные тестовые задачи с разными задачами rake. Хитрость заключается в добавлении имени задачи при создании новой тестовой задачи. Так,

Rake::TestTask.new(:default) do |t|
  t.test_files = FileList['test/test_*.rb']
end

Rake::TestTask.new(:internet) do |t|
  t.test_files = FileList['test/itest_*.rb']
end

desc "No internet connection required"
task :default => :test

desc "Needs internet connection"
task :internet => :test

Таким образом, rake internet просто запустит тестовые случаи, которым требуется подключение к Интернету.

person canoe    schedule 17.12.2013