Множество тестов с минитестом - PullRequest
1 голос
/ 15 сентября 2011

У меня есть приложение с некоторыми характеристиками, записанными в minitest . Как обычно, я запускаю их, используя rake.

Поскольку иногда я получал случайные результаты, мои спецификации могут проходить один раз, а в другой - проваливаться.

В этом случае я могу сохранить порядковый номер и воспроизвести его позже, после исправления. Поскольку у меня есть такого рода тесты (со случайным результатом), я обычно запускаю rake много раз, просто чтобы убедиться, что приложение в порядке.

Я хотел бы знать, есть ли хороший способ выполнить несколько rake тестов (например, 100 раз) и остановить их, если есть какой-либо сбой или ошибка?

Ответы [ 2 ]

5 голосов
/ 15 сентября 2011

Я думаю, вам следует подумать еще раз о тесте, а не о тестовом вызове. Тест со случайным результатом выглядит неправильно для меня.

Какой случайный фактор в вашем тесте? Можете ли вы написать макет элемента для случайного фактора и повторить тест с другими значениями для макета элемента Таким образом, вы получаете «полный» тест.

0 голосов
/ 16 сентября 2011

Я создал фиктивный тест со случайным результатом для имитации вашей ситуации:

#store it as file 'testcase.rb'
gem 'test-unit'
require 'test/unit'

class X < Test::Unit::TestCase
  def test_1
    num = rand(10) 
    assert_true( num < 5, "Value is #{num}")
  end
end 

Следующая задача вызывает тест 10 раз и останавливается после первого сбоя:

TEST_REPETION = 10
task :test do
  TEST_REPETION.times{
    stdout = `ruby testcase.rb`

    if stdout =~ /\d+\) Failure/
      puts "Failure occured"
      puts stdout
      exit
    else
      puts 'Tests ok'
    end
  }
end

ДляПри реальном использовании я бы адаптировал некоторые части:

  • Вместо puts 'Tests ok' определите счетчик, чтобы увидеть, как часто тест был успешным
  • Вместо puts stdout результат можно сохранить в результатефайл?
...