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

Я использую задачу 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 Ответ

0 голосов
/ 18 октября 2012

Я не знаю, какой процесс создает сообщение "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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...