Как найти файл / тест, вызывающий прекращение тестового задания?

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

ruby -I"lib:test" -I"[...]/lib" "[...]/lib/rake/rake_test_loader.rb" "vendor/plugins/shop/test/**/*_test.rb"

куда [...] это путь к грабли в моем наборе.

Когда я запускаю задачу, я получаю некоторые предупреждения и некоторые . что означает, что некоторые тесты проходят, но я в конечном итоге terminated

Пример журнала:

...................................... 7431 Terminated

Обратите внимание, что 7431 является PID.

Я не могу найти никакой информации об этом случае, подробные или трассировочные опции не помогают мне выяснить, где сломан мой набор тестов.

Кто-нибудь знает, что я могу сделать, чтобы это исправить?

1 ответ

Решение

Я не знаю, какой процесс создает сообщение "Termination", но вы можете попробовать следующее:

Добавить

def setup
  puts "Start test #{self.__name__}"
  STDOUT.flush
end
def teardown
  puts "Finished test #{self.__name__}"
  STDOUT.flush
end

на все ваши тесты.

Пример:

require 'test/unit'

class Mytest < Test::Unit::TestCase
  def test_1
    assert_equal(1,1)
  end
  def test_2
    assert_equal(1,1)
    exit 1  ##stops the execution
  end
  def test_3
    assert_equal(1,1)
  end
end

результаты в

Loaded suite test
Started
.>Exit code: 1

Тест остановлен, и вы не видите, где. Я надеюсь, что это похоже на ваше сообщение "Завершить".

Теперь добавьте немного кода:

require 'test/unit'

class Mytest < Test::Unit::TestCase
  def setup
    puts "Start test #{self.__name__}"
    STDOUT.flush
  end
  def teardown
    puts "Finished test #{self.__name__}"
    STDOUT.flush
  end
  def test_1
    assert_equal(1,1)
  end
  def test_2
    assert_equal(1,1)
    exit 1  ##stops the execution
  end
  def test_3
    assert_equal(1,1)
  end
end

Это приводит к:

Loaded suite test
Started
Start test test_1
Finished test test_1
.Start test test_2
Finished test test_2

Последнее упомянутое test_2 это тот, у кого проблема.

Вы также можете добавить setup а также teardown для каждого TestCase (но если у вас есть собственные определения настройки / разрыва, они не будут содержать тестовый код).

require 'test/unit'

class Test::Unit::TestCase
  def setup
    puts "Start test #{self.__name__}"
    STDOUT.flush
  end
  def teardown
    puts "Finished test #{self.__name__}"
    STDOUT.flush
  end
end

Не забудьте удалить код - он только для того, чтобы определить, где может быть ваша проблема.

Другие вопросы по тегам