Как найти файл / тест, вызывающий прекращение тестового задания?
Я использую задачу 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
Не забудьте удалить код - он только для того, чтобы определить, где может быть ваша проблема.