gpt4 book ai didi

ruby - 在 Ruby 的 Test::Unit::TestCase 中,如何覆盖初始化方法?

转载 作者:数据小太阳 更新时间:2023-10-29 06:27:38 24 4
gpt4 key购买 nike

我正在为 Test::Unit 苦苦挣扎。当我想到单元测试时,我会想到每个文件一个简单的测试。但在 Ruby 的框架中,我必须改写:

class MyTest < Test::Unit::TestCase 
def setup
end

def test_1
end

def test_1
end
end

但是每次调用 test_* 方法时都会运行设置和拆卸。这正是我不想要的。相反,我想要一个只为整个类(class)运行一次的设置方法。但是我似乎无法在不破坏 TestCase 的初始化的情况下编写自己的 initialize()。

这可能吗?还是我让这件事变得无可救药地复杂了?

最佳答案

如 Hal Fulton 的书“The Ruby Way”中所述。他覆盖了 Test::Unit 的 self.suite 方法,该方法允许类中的测试用例作为一个套件运行。

def self.suite
mysuite = super
def mysuite.run(*args)
MyTest.startup()
super
MyTest.shutdown()
end
mysuite
end

这是一个例子:

class MyTest < Test::Unit::TestCase
class << self
def startup
puts 'runs only once at start'
end
def shutdown
puts 'runs only once at end'
end
def suite
mysuite = super
def mysuite.run(*args)
MyTest.startup()
super
MyTest.shutdown()
end
mysuite
end
end

def setup
puts 'runs before each test'
end
def teardown
puts 'runs after each test'
end
def test_stuff
assert(true)
end
end

关于ruby - 在 Ruby 的 Test::Unit::TestCase 中,如何覆盖初始化方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/255969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com