Программирование на языке Ruby
Шрифт:
class MyTests < Test::Unit::TestCase
# ...
end
# Явное указание исполнителя тестов...
runner = Test::Unit::UI::Console::TestRunner
runner.run(MyTests)
Параметром может быть любой объект, обладающий методом
suite
, который возвращает объект, представляющий комплект тестов. Что все это означает? Познакомимся к понятием комплекта тестов ближе.
Пусть, например, есть три набора тестов, и вы хотите прогнать их как единый комплект. Можно было бы поступить так:
require 'test/unit/testsuite'
require 'tc_set1'
require 'tc_set2'
require 'ts_set3'
class TS_MyTests
def self.suite
mysuite = Test::Unit::TestSuite.new
mysuite << TC_Set1.suite
mysuite << TC_Set2.suite
mysuite << TS_Set3.suite
return mysuite
end
end
Test::Unit::UI::Console::TestRunner.run(TS_MyTests)
Но такая сложность ни к чему. Имея отдельные наборы тестов, библиотека
Test::Unit
в состоянии просмотреть пространство объектов и объединить их все в один комплект. Поэтому следующий код тоже будет работать (и даже вызывать подразумеваемый по умолчанию исполнитель тестов):
require 'test/unit'
require 'tc_set1'
require 'tc_set2'
require 'ts_set3'
Библиотека
Test::Unit
располагает и другими возможностями, а в дальнейшем, вероятно, будет усовершенствована. Самую свежую информацию ищите в сети. 16.2. Комплект инструментов ZenTest
Этот великолепный инструментарий написал Райан Дэвис (Ryan Davis). Основной инструмент (
zentest
) — это исполняемая программа, которая генерирует файл с тестами на основе анализа вашего кода. Тестируемый класс (class under test — CUT) служит основой тестового класса (test class — ТС). На каждом уровне области видимости в начало имени класса добавляется строка
Test
, а в начало имени метода — строка test_
. Иногда имена методов приходится «подправлять», например в случае с методом ==
(к имени которого нельзя добавлять никакой префикс) или если имя метода оканчивается на ?, ! или =. В листинге 16.2 приведен пример подлежащего тестированию кода: Листинг 16.2. Класс, подлежащий тестированию
class Alpha
class Beta
attr_accessor :foo, :bar
def initialize
end
def foo?
@foo
end
end
def initialize
end
def process
end
def process!
end
def ==(other)
end
def ===(other)
end
end
После
zentest file.rb >tfile.rb
получится файл, показанный в листинге 16.3. Листинг 16.3. Результат работы ZenTest
# Code Generated by ZenTest v. 3.2.0
# classname: asrt / meth = ratio%
# Alpha::Beta: 0 / 7 = 0.00%
require 'test/unit' unless defined? $ZENTEST and $ZENTEST
class 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'
end
end
module 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
Поделиться:
Популярные книги
Корона Тафелона
3. Ведьмина дорога
Фантастика:
фэнтези
5.00
рейтинг книги
Некромант . Трилогия
Перстень некромансера
Фантастика:
фэнтези
7.64
рейтинг книги
Будаг — мой современник
Проза:
советская классическая проза
5.00
рейтинг книги
Искатель, 2011 №5
388. Искатель
Приключения:
прочие приключения
5.00
рейтинг книги
Собрание сочинений. Том 45
Научно-образовательная:
философия
5.00
рейтинг книги
Ермак. Регент
10. Ермак
Фантастика:
попаданцы
альтернативная история
4.80
рейтинг книги
Сёгун
Азиатская сага
Приключения:
исторические приключения
прочие приключения
9.41
рейтинг книги
Тот, кто знает. Книга вторая. Перекресток
1. Преступления правильной жизни
Детективы:
прочие детективы
7.91
рейтинг книги
3ds Max 2008. Секреты мастерства
Компьютеры и Интернет:
программное обеспечение
5.00
рейтинг книги
Справедливость для всех
6. Ойкумена
Фантастика:
эпическая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Разбуди в себе исполина
Научно-образовательная:
психология
5.00
рейтинг книги
1001 заговор сибирской целительницы / Наталья Ивановна Степанова
Дом и Семья:
прочее домоводство
7.86
рейтинг книги
Кровь, слезы и лавры
Исторические миниатюры
Проза:
историческая проза
5.00
рейтинг книги
Последний реанорец. Том V
4. Высшая Речь
Фантастика:
аниме
фэнтези
попаданцы
5.00