博文中的定义是特定的(setup(&block) 方法在模块 Thoughtbot::Shoulda 中定义在 context.rb.should.rb 然后有 TestCase 扩展该模块)。
纯test::unit的定义是
# File test/unit/testcase.rb, line 100
def setup
end
你能做的就是
def setup
log_test
end
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
编辑
如果你真的不想编辑你的文件,你可以冒险重新打开测试用例并延长运行:
class Test::Unit::TestCase
alias :old_run :run
def run
log_test
old_run
end
end
这应该可以(不过我没有 ruby 可以测试)
我放弃了! (沮丧)
我检查了代码,rails 实际上在幕后发挥了作用,这可能是重新定义 run 不起作用的原因。
事情是:魔术的一部分是包括 ActiveSupport::CallBack 并为设置和拆卸创建回调。
意思是
class Test::Unit::TestCase
setup :log_test
private
def log_test
if Rails::logger
# When I run tests in rake or autotest I see the same log message multiple times per test for some reason.
# This guard prevents that.
unless @already_logged_this_test
Rails::logger.info "\n\nStarting #{@method_name}\n#{'-' * (9 + @method_name.length)}\n"
end
@already_logged_this_test = true
end
end
end
应该可以的
并且实际使用它运行测试确实有效。我感到困惑的是,这是我尝试的第一件事,但失败了,出现了同样的错误