记录器在ruby单元测试启动或设置

时间:2015-11-18 23:14:34

标签: ruby unit-testing

我正在用红宝石编写一些测试并提出这个问题。

class MyTest < Test::Unit::TestCase
    LogFile = "test.log"
    Log= Logger.new(LogFile)

    def startup
       @log = Log
    end

    def shutdown
    end

    def setup
    end

   ....

end

我正在尝试在启动时创建一个记录器,但是,它不能正常工作。在测试用例中,@ log为零。 我知道我可以把它放在设置中,但是,我不想为每个测试用例重新分配它。为什么它不起作用?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

startup应该用作类方法。在那里你可以定义一个类变量,如@@log

如果您想使用实例变量@log,则必须将其填入setup

示例:

require 'test/unit'
require 'logger'
class MyTest < Test::Unit::TestCase
    LogFile = "test.log"
    Log= Logger.new(LogFile)

    def self.startup
       @@log = Log
    end

    def setup
       @log = Log
    end

    def test_class_var
      assert_kind_of(Logger,@@log)
    end
    def test_instance_var
      assert_kind_of(Logger,@log)
    end

end