使用现有的 TestUnit 测试和 Simplecov 覆盖运行 RSpec

Posted

技术标签:

【中文标题】使用现有的 TestUnit 测试和 Simplecov 覆盖运行 RSpec【英文标题】:Running RSpec With Existing TestUnit tests and coverage with Simplecov 【发布时间】:2012-08-27 22:37:28 【问题描述】:

我是 ROR 新手,想知道 Simplecov 是否为同一项目中的 TestUnit 和 RSpec 测试提供测试覆盖?

我正在将我们在 RSpec 中编写的一些测试从独立的 webapp 迁移到当前使用 TestUnit 的现有 webapp。

我知道 RSpec 和 TestUnit 可以存在于同一个项目中,但我无法看到 Simplecov 将如何为这两个测试框架生成覆盖率。

当我在命令行 bundle exec rake spec 上运行时,我得到:

Coverage report generated for RSpec to /.../coverage. 0 / 0 LOC (0.0%) covered.

当我运行 bundle exec rake test 时,会生成测试覆盖率。

计划是将所有内容从 TestUnit 迁移到 rspec,但我们希望在迁移到 TestUnit 的同时让 Simplecov 涵盖 400 多个测试。

我确定我的配置中一定有什么不正确的地方

任何帮助将不胜感激!

我有以下设置:

--- 耙文件 ---

require File.expand_path('../config/application', __FILE__)
require 'rake'
require 'simplecov'

if Rails.env == 'test' || Rails.env == 'development'
  require 'ci/reporter/rake/test_unit'
  require 'ci/reporter/rake/rspec'
end

SimpleCov.start 'rails' do
  add_filter "/test/"
  add_filter "/spec/"
end

-- 规范/spec_helper.rb--

ENV["RAILS_ENV"] ||= 'test'

require 'simplecov'
SimpleCov.start 'rails'

require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'

-- 测试/test_helper.rb --

require 'simplecov'
SimpleCov.start 'rails' do
  add_filter "/vendor/"
end

ENV["RAILS_ENV"] = "test"

require File.expand_path('../../config/environment', __FILE__)

【问题讨论】:

它没有直接解决您的问题,但您可能会找到一些参考的this *** question。 【参考方案1】:

这并不能直接回答您的问题,但如果有帮助,我有一个 bash 脚本可以为您完成从 TestUnit 移植到 RSpec 的大量工作。它位于https://github.com/Noreaster76/porter。您可以使用它来转换您的 TestUnit 文件,稍微清理一下结果后,您将不会遇到必须同时运行 RSpec 和 TestUnit 的问题。

【讨论】:

以上是关于使用现有的 TestUnit 测试和 Simplecov 覆盖运行 RSpec的主要内容,如果未能解决你的问题,请参考以下文章

Shoulda with TestUnit:使用Shoulda/Subject的条件验证

如何在现有的 ios 测试项目中启用 xcode 7 UI 测试

使用现有的迁移表进行 laravel 单元测试

如何对现有的 linux 应用程序进行压力测试

在开发过程中测试 iOS 应用程序存档并保持现有的 sqlite 数据库已在使用中

当我的测试集包含我的火车数据没有的数据时出现错误?