Программирование на языке Ruby
Программирование на языке Ruby читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
require 'test/unit' unless defined? $ZENTEST and $ZENTESTclass TestAlpha < Test::Unit::TestCase def test_process raise NotImplementedError, 'Need to write test_process' end def test_process_bang raise NotImplementedError, 'Need to write test_process_bang' endendmodule TestAlpha class TestBeta < Test::Unit::TestCase def test_bar raise NotImplementedError, 'Need to write test_bar' end def test_bar_equals raise NotImplementedError, 'Need to write test_bar_equals' end def test_foo raise NotImplementedError, 'Need to write test_foo' end def test_foo_eh raise NotImplementedError, 'Need to write test_foo_eh' end def test_foo_equals raise NotImplementedError, 'Need to write test_foo_equals' end endend# Number of errors detected: 9Обратите внимание, что каждый тестовый метод возбуждает исключение (предложение
raiseИсходный файл почему-то не включается в тестовый. Можно поместить в начало тестового файла директиву
require 'file'test/unitВ командной строке можно указать и второй параметр. Если добавить код в тестируемый класс, то тестовые классы окажутся устаревшими. Чем обновлять их вручную, можно сгенерировать только «обновления»:
zentest file.rb tfile.rb >tfile2.rbВ комплект входит еще одна полезная программа:
unit_diffassert_equal ("foo", "bar") 1) Failure:testme(Foo) [(irb):7]:<"foo"> expected but was<"bar">.Тут все просто и понятно. Но предположим, что каждая из переданных строк (string) состояла из нескольких строчек (line), а различие начиналось только в седьмой строчке. Программа
unit_diff diffruby testfile.rb | unit_diffПрограмма понимает следующие флаги:
-h Справка о порядке запуска-v Номер версии-b Не считать различными фрагменты, различающиеся только по количеству пробелов-c Выполнять контекстное сравнение-k Не удалять временные файлы-l Включать в дельту номера строк-u Выполнять унифицированное сравнениеПрограмма
autotestДля пользования этим инструментом нужно соблюдать некоторые соглашения об именах. Правила простые:
• все тесты должны находиться в каталоге
test• имена всех файлов должны начинаться с
Test_• имена классов должны начинаться с
Test• подлежащий тестированию код должен находиться в каталоге
lib• файлам в каталоге
libtesttest_Будучи запущена, программа
autotestПрограмма
multiruby16.3. Работа с отладчиком Ruby
Честно говоря, отладчик Ruby не особенно популярен. Лично я им не пользуюсь и встречал не так уж много людей, которые с ним работали. Но сознавать, что он есть, приятно. Ниже приводится краткое описание работы с ним.
Для вызова отладчика нужно просто затребовать библиотеку
debugruby -rdebug rayfile.rbВ ответ на приглашение вида (
rdb:1listТаблица 16.1. Наиболее употребительные команды отладчика
| Команда | Описание |
|---|---|
<b>b</b>reak | Установить точку прерывания или получить их список. |
<b>del</b>ete | Удалить все или некоторые точки прерывания. |
<b>cat</b>ch | Установить точку перехвата или получить их список. |
<b>s</b>tep | Вход внутрь метода. |
<b>n</b>ext | Перейти к следующей строке (без захода внутрь метода). |
<b>h</b>elp | Справка (вывести список всех команд). |
<b>q</b>uit | Выйти из отладчика. |
