тесты ruby ​​- сообщения об ошибках не включают номера строк или имя файла - PullRequest
0 голосов
/ 23 декабря 2010

Как получить номера строк, которые будут сообщаться с моими ошибками при тестировании.Вот что я получаю в ответ на типичную ошибку:

josh@josh-laptop:~/d/test$ ruby unit/line_test.rb -n test_update
Loaded suite unit/line_test
Started
E
Finished in 0.066663 seconds.

  1) Error:
test_update(LineTest):
NameError: undefined local variable or method `sdf' for
#<LineTest:0xb6e61304>


1 tests, 0 assertions, 0 failures, 1 errors

Трудно отладить без номера строки и имени файла.Из примеров кода, которые я видел, люди обычно получают более подробные сообщения об ошибках.Как мне это включить?

Спасибо!

[Редактировать] Из руководства по Rails

$ ruby unit/post_test.rb -n test_should_report_error
Loaded suite -e
Started
E
Finished in 0.082603 seconds.

  1) Error:
test_should_report_error(PostTest):
NameError: undefined local variable or method `some_undefined_variable' for #<PostTest:0x249d354>
    /test/unit/post_test.rb:6:in `test_should_report_error'

1 tests, 0 assertions, 0 failures, 1 errors

Ответы [ 3 ]

0 голосов
/ 23 декабря 2010

Я нашел ответ, который мне не нравится, но который делает работу. Я думал, что выложу это на тот случай, если другие не смогут найти лучшего решения

ruby -d unit/line_test.rb -n test_update

-d устанавливает $ DEBUG в true и выдает дамп с ошибкой, предупреждением, сведениями об исключении

0 голосов
/ 24 января 2012

Если это приложение Rails? Тогда, скорее всего, мешает очиститель следов Rails . Скорее всего, потому что ваш каталог начинается с «unit», а не «test», как предполагает Rails. Я столкнулся с подобной проблемой (плагин, который я разрабатывал, находился вне каталога Rails, поэтому вся обратная трассировка была отфильтрована).

Проверьте глушитель по умолчанию и либо добавьте фильтр, чтобы он пропустил этот глушитель (фильтры работают перед глушителями), либо просто удалите глушитель с помощью remove_silencers! . Rails предоставляет файл в каталоге инициализаторов , который сделает это, но строка закомментирована по умолчанию.

0 голосов
/ 23 декабря 2010

Как долго ваши юнит-тесты? Как правило, контрольный пример должен состоять только из пары строк кода. Если нет, рассмотрите возможность разделения. Это должно сузить кругозор, особенно для неопределенной переменной или метода. В любом случае, если вы установите ruby-debug, вы можете пройти тестовый пример и точно увидеть, в чем проблема.

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