ruby-on-rails - 使用 simplecov 的 Ruby on Rails 测试覆盖率

标签 ruby-on-rails ruby automated-tests simplecov


我想分析我们代码的测试覆盖率,因此安装了 simplecov gem。

我们的测试环境有 2 个独立的项目:REST API 测试(Java+Rest-Assured)和 Web UI 测试(Java-Selenium)。
如您所见,我们没有在 Rails 应用程序内部进行单元测试,我们正在使用外部项目进行测试。

我按照教程中的描述配置了 simplecov gem,并将其放入 rails 脚本中:

require 'simplecov'
SimpleCov.start 'rails'
puts "require simplecov"

加载应用程序时,我看到了我打印的字符串。

我运行了两个自动化测试项目,在 rails 日志中看到了它们的打印输出,但我没有看到 Controller /模型的任何覆盖范围,我只看到一些 gems 和 rails 的初始化文件的一小部分。< br/>
我在网上搜索,并尝试将代码短语放入 boot.rb 甚至 puma.rb 中,但它返回了相同的结果。



有什么想法吗?

编辑

所有的评论都没有帮助,但我发现了一些非常有趣的东西,在所有情况下,我只看到标记为已测试的方法的名称,而不是内容(在 Controller 中)。
我尝试将 simplecov 起始短语放在 bin/rails、puma.rb、config.ru、environment.rb 中,都没有给出预期的代码覆盖结果。

最佳答案

我不确定 simplecov 是否可以衡量整个 Rails 应用程序的覆盖范围...但我用谷歌搜索了一些可以附加为机架中间件的东西:

https://github.com/danmayer/coverband

它的输出与 simplecov 兼容。所以它看起来对你的情况很有用。

正如您在问题中提到的,您使用的是 puma。我怀疑,由于它是多线程的,它会生成一些 Rails 应用程序,并且它们的 simplecov 输出会覆盖彼此的结果。我会尝试使用像 webrick 这样的单线程服务器 - 但这可能会使您的测试变慢(取决于实际启动测试的方式)或尝试 coverband gem。

此外 - 即使服务器是单线程的 - 我不确定每个请求是否不会覆盖 simplecov 的输出。

关于ruby-on-rails - 使用 simplecov 的 Ruby on Rails 测试覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51809678/

相关文章:

automated-tests - 如何按特定顺序运行 Robotium 测试?

ruby-on-rails - 关注railsturial.org时未定义方法 'remember_token="

javascript - 用户登录配置文件的自定义配色方案

ruby-on-rails - 有没有办法在 Heroku 中记录来自 Rails 控制台的命令?

ruby - 如何使用 RSpec 比较两个文本文件?

facebook - 是否可以在测试应用之间共享 Facebook 测试用户?

mysql - 延迟作业 - rake 作业 :clear causes "Can' t connect to local MySQL server through socket '/tmp/mysql.sock' (2)

ruby-on-rails - Gem::LoadError:为数据库适配器指定了 'postgresql',但未加载 gem

ruby-on-rails - 在迁移中创建初始记录

c++ - 使用数据库自​​动集成测试 C++ 应用程序