gpt4 book ai didi

ruby-on-rails - 使用 simplecov 进行迷你测试

转载 作者:行者123 更新时间:2023-12-02 05:10:11 26 4
gpt4 key购买 nike

我正在尝试像这样测试 minitest 文件:

COVERAGE=true ruby -Itest test/views/info_pages_test.rb
COVERAGE=true ruby -Itest test/views/errors_test.rb

现在我的 info_pages_test 有 97% 的覆盖率,我的 errors_test 有 75% 的覆盖率。它们一起应该覆盖 100%.. 但每次我运行上述命令时,我都会得到一个结果或另一个 75% 或 97%。有没有办法将两个测试文件的结果合并到一个覆盖率报告中?

帮助将不胜感激!

这是我的 minitest_helper.rb 文件的顶部

## SimpleCOV

require 'simplecov'

if ENV["COVERAGE"]

SimpleCov.start('rails') do

add_filter "/test/"

end
puts "Started SimpleCOV"
end

我在应用程序根目录中也有一个 .simplecov 文件,但使用它会给我带来不可预测的结果。我偶尔会获得 100% 的覆盖率,这是不可预测的。

.simplecov 文件

SimpleCov.use_merging true
SimpleCov.merge_timeout 3600

最佳答案

您遇到的问题是每个“测试套件”都会相互覆盖,因为套件名称(可通过 SimpleCov.command_name 'xyz' 配置),而不是合并时示例 cucumber 和 rspec 结果。

首选解决方案:使用 rake 测试或其他类似工具,通过一次运行整个测试套件来生成覆盖率报告。

如果您坚持运行单独的测试文件,您可以通过提供伪随机命令名称来欺骗 SimpleCov 合并这些结果而不是覆盖它们,即 SimpleCov.command_name "MiniTest #{Time.now}",或(取决于您的设置)使用 ARGV,即 SimpleCov.command_name "Minitest #{File.basename(ARGV[1])}"。后者的优点是不会在重新运行同一测试文件时重复结果,因为这些结果将在合并时被覆盖,但是当您运行所有测试并且没有正确检查 ARGV 或您的测试框架时可能会失败在你捕获它之前篡改 ARGV。

虽然您可以针对单独的测试运行进行这项工作,但一般来说,我建议仅根据完整的测试套件运行来生成覆盖率报告,因为其他方法会留下错误的空间。

关于ruby-on-rails - 使用 simplecov 进行迷你测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15604390/

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