phi*_*ant 5 ruby unit-testing module testunit modulino
我正在尝试将模块的单元测试包含在与模块本身相同的源文件中,遵循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
Run Code Online (Sandbox Code Playgroud)
现在,我可以运行执行此源文件的单元测试.
但是,当我需要/从另一个脚本加载它们时,它们也会运行.如何避免这种情况?
有没有更惯用的方法来实现Ruby,除非不鼓励这种做法?
sam*_*amg 11
就个人而言,我从来没有听说有人试图在Ruby中这样做.这绝对不是标准做法.那说你可以利用这个技巧:
if __FILE__ == $0
# Do something.. run tests, call a method, etc. We're direct.
end
Run Code Online (Sandbox Code Playgroud)
if块中的代码仅在文件直接执行时执行,而不是在另一个库或应用程序需要时执行.
更多红宝石技巧:http://www.rubyinside.com/21-ruby-tricks-902.html