Как я могу иметь тестовый модуль в том же исходном файле? - PullRequest
1 голос
/ 25 октября 2010

Этот вопрос относится к Ruby.

Предположим, я хочу, чтобы тестовый блок для моего класса был в том же файле, что и его определение. Возможно ли это сделать? Например, если бы я передал аргумент «--test» при запуске файла, я бы хотел, чтобы он запускал тестовый модуль. В противном случае выполняется нормально.

Представьте себе файл, подобный этому:

require "test/unit"

class MyClass

end

class MyTestUnit < Test::Unit::TestCase
# test MyClass here
end

if $0 == __FILE__
   if ARGV.include?("--test")
      # run unit test
   else
      # run normally
   end
end

Какой код должен быть в разделе #run unit test?

1 Ответ

3 голосов
/ 25 октября 2010

Этого можно достичь с помощью модуля:

#! /usr/bin/env ruby

module Modulino
    def modulino_function
        return 0
    end
end

if ARGV[0] == "-test"
    require 'test/unit'

    class ModulinoTest < Test::Unit::TestCase
        include Modulino
        def test_modulino_function
            assert_equal(0, modulino_function)
        end
    end
else
    puts "running"
end

или без модуля, на самом деле:

#! /usr/bin/env ruby

def my_function
    return 0
end

if ARGV[0] == "-test"
    require 'test/unit'

    class MyTest < Test::Unit::TestCase
        def test_my_function
            assert_equal(0, my_function)
        end
    end
else
    puts "running rc=".my_function()
end
...