我正在尝试测试最小的文件,如下所示:
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发布于 2013-03-25 22:18:30
您遇到的问题是,由于套件名称(可通过SimpleCov.command_name 'xyz'配置),而不是合并(例如cucumber和rspec结果),这些“测试套件”中的每一个都将相互覆盖。
首选的解决方案:通过一次运行整个测试套件来生成覆盖报告,使用rake test或其他类似的工具。
如果您坚持运行单独的测试文件,您可以通过提供伪随机命令名(如SimpleCov.command_name "MiniTest #{Time.now}" )或(取决于您的设置)使用ARGV (即SimpleCov.command_name "Minitest #{File.basename(ARGV[1])}" )来欺骗SimpleCov合并这些结果,而不是覆盖它们。后者的优点是不会在重新运行相同的测试文件时复制结果,因为这些结果将在合并时被覆盖,但当您运行所有测试并且没有正确检查ARGV的存在时,可能会失败,或者在您可以获取ARGV之前,您的测试框架篡改了ARGV。
尽管您可以在单独的测试运行中使用此功能,但一般来说,我建议仅基于完整测试套件运行的覆盖率报告,因为其他方法会留下错误的空间。
https://stackoverflow.com/questions/15604390
复制相似问题