Я пытаюсь включить модульные тесты для модуля в том же исходном файле, что и сам модуль, следуя модели Perl modulino.Как включить модульные тесты в рубиновый модуль?
#! /usr/bin/env ruby
require 'test/unit'
module Modulino
def modulino_function
return 0
end
end
class ModulinoTest < Test::Unit::TestCase
include Modulino
def test_modulino_function
assert_equal(0, modulino_function)
end
end
Теперь я могу запустить модульные тесты, выполняющие этот исходный файл.
Но, они также запускаются, когда мне требуется/загрузить их из другого сценария. Как этого можно избежать?
Есть ли более идиоматический способ достичь этого с помощью Ruby, если эта практика не обескуражена?
Я считаю, что это удобный способ работы с (как правило) небольшими независимыми модулями, когда они все еще «молоды», особенно когда я работаю в редакторе, в котором я могу выполнить сразу (например, SciTE). Очевидно, что это не проблема, когда у вас есть более крупные тела кода и/или AutoTest. Но я не живу в этом мире ;-) –
Thansk, это будет работать со стандартным (нормальным?) Модулем, но НЕ работает с модульными тестами, поскольку они выполняются автоматически. +1 для ссылки – philant
Вы можете поставить 'require 'test/unit'' и определения тестового примера внутри оператора if, а затем они будут выполняться только при выполнении текущего файла. – BaroqueBobcat