Как найти файл/тест, из-за которого задача rake test завершается?

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

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

Где [...] — это путь к гему rake в моем наборе драгоценных камней.

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

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

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

Обратите внимание, что 7431 — это PID.

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

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


person Adrien Coquio    schedule 02.04.2012    source источник


Ответы (1)


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

Добавить

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

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

person knut    schedule 18.10.2012