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) — это исполняемая программа, которая генерирует файл с тестами на основе анализа вашего кода.
Тестируемый класс (Test, а в начало имени метода — строка test_. Иногда имена методов приходится «подправлять», например в случае с методом == (к имени которого нельзя добавлять никакой префикс) или если имя метода оканчивается на ?, ! или =. В листинге 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.
# 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

 
                