gpt4 book ai didi

ruby - 检测 ruby​​ 测试方法的覆盖

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

如果你写一个像这样的测试类

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

def test_1
flunk
end

def test_1
assert true
end
end

第一个 test_1 被忽略。虽然这看起来像是一个愚蠢的错误,但在复制和粘贴编程时可能会发生。除了运行

grep test test_me.rb | wc

并将其与测试单元表示已运行的测试数量进行比较,或者使用 rcov 或 heckle,或者使用 -w 运行,您如何检测此类问题?

此外,是否有任何方法可以指定不应覆盖测试方法?

编辑:被测试的方法有一个参数有 6 个左右的可能值,测试人员想测试每个场景。这就是使用复制和粘贴编程的原因。对于这种情况,我可以设想的唯一替代方案是一个包含参数和预期值的六元素数组。

最佳答案

您可以利用 Ruby 的 method_added,它会在任何时候将方法添加到类中时调用。您应该能够将某些内容放入您包含的模块中,但这里有一个在您的测试类中执行此操作的简单示例。

class MyTest < Test::Unit::TestCase

@@my_tests = []

def self.method_added(sym)
raise "#{sym} already defined!" if @@my_tests.include? sym
@my_tests << sym
end

def test_foo_1
end

def test_foo_2
end

def test_foo_1
end
end

关于ruby - 检测 ruby​​ 测试方法的覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/567660/

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