- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
Ruby-2.0.0p247ActiveRecord-4.0.1 cucumber 1.3.10Aruba-0.5.3SimpleCove-0.8.2
我们在一个仍然使用 ActiveRecord 的 NON-RAILS 项目中使用 Cucumber 和 Aruba。我们的 cucumber 功能在进程内和进程外运行代码。进程外代码使用与生产中相同的加载程序序列通过 bin 中的启动 stub 执行:
#!/usr/bin/env ruby
require 'bundler/setup'
Bundler.require
require 'pathname'
my_dir = Pathname.new(
File.join( File.dirname(
__FILE__ ), '../', 'lib/' ) ).realpath.to_s + '/'
require my_dir + File.basename( __FILE__ )
HllThForexRssFetch::Main.new( ARGV ).execute
#EOF
我们的 features/support/env.rb 文件包含以下内容:
$ cat features/support/env.rb
# Must load and start simplecov before any application code
require 'simplecov'
SimpleCov.start do
add_filter "/features/"
add_filter "/libexec"
add_filter "/lib/hll_active_record/"
add_filter "/test/"
add_filter "/tmp/"
end
SimpleCov.command_name( "Cucumber Features" )
# Do not use cucumber/rails in standalone projects
#require 'cucumber/rails'
. . .
当我们的步骤定义通过 aruba 的运行命令调用外部 bin/文件时,步骤定义正常工作并且测试按预期完成,但代码覆盖率未与运行的其余部分合并。我正在寻找的是有关如何设置 simplecov 以报告进程外测试的代码覆盖率以及直接由 Cucumber 在进程内运行的部分的说明。
如何做到这一点?
最佳答案
我有一个与您相似的环境,这就是我如何让它工作的:
假设目录树如下:
project
|- bin
| |- binary
|- lib
| |- ...
|- spec
| |- ...
|- features
| |- support
| | |- env.rb
| |- ...
拳头检查这个问题https://github.com/colszowka/simplecov/issues/234
它描述了二进制文件应该启动 simplecov。这很骇人听闻,但我将此 header 添加到我的二进制文件中(项目/bin/二进制文件):
if ENV['COVERAGE']
require 'simplecov'
# As described in the issue, every process must have an unique name:
SimpleCov.command_name "binary #{Process.pid}"
# When running with aruba simplecov was using /tmp/aruba as the root folder.
# This is to force using the project folder
SimpleCov.root(File.join(File.expand_path(File.dirname(__FILE__)), '..'))
SimpleCov.start do
filters.clear
# Because simplecov filters everything outside of the SimpleCov.root
# This should be added, cf.
# https://github.com/colszowka/simplecov#default-root-filter-and-coverage-for-things-outside-of-it
add_filter do |src|
!(src.filename =~ /^#{SimpleCov.root}/) unless src.filename =~ /project/
end
# Ignoring test folders and tmp for Aruba
add_filter '/spec/'
add_filter '/test/'
add_filter '/features/'
add_filter '/tmp/'
end
end
然后在调用 cucumber 中的二进制文件时,应该设置 COVERAGE 环境变量。在 feature/support/env.rb 的 before 子句中:
require 'simplecov'
SimpleCov.command_name 'Cucumber'
Before do
# This is using the aruba helper,
# cf. https://github.com/cucumber/aruba/blob/master/lib/aruba/api.rb
set_env('COVERAGE', 'true')
# This could also be accomplished with the "I set the environment variables to:" step
end
如果您的环境中有两个框架(如本例中的 RSpec 和 Cucumber),请不要忘记 https://github.com/colszowka/simplecov#merging-results
关于ruby - 如何配置 Cucumber/Aruba 以使用 SimpleCov?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20207667/
我正在尝试设置 SimpleCov 为 3 个应用程序生成报告,这些应用程序从本地 gem 共享大部分代码(模型、 Controller ),但每个应用程序使用的代码规范都在每个 ./spec 中,而
我的覆盖率报告不是100%,因为我的类中有几个#inspect方法用于调试目的。有没有一种方法可以配置SimpleCov以忽略所有检查方法? 最佳答案 我知道我迟到了,但是我必须做同样的事情并找到了解
我在使用简单的 cov 和 rspec 时遇到了非常奇怪的问题。我的 rails_hlper 文件中有以下内容 require 'simplecov' SimpleCov.start 'rails'
如何将我的库的文件夹和子文件夹添加到 simplecov 生成覆盖率? 我的 SimpleCov 配置 SimpleCov.start do add_group 'Bot', 'app/b
我正在使用“simplecov”和“coveralls”ruby gems,但 simplecov 生成的报告与 coveralls 生成的报告不匹配。 我发现工作服并没有忽略包裹在 中的代码 # :
在澄清了 simplecov 如何确定一条线是否已被测试执行之后。 我有以下方法: def over? end_at < Time.zone.now end 其中 end_at 是对象的 Acti
我正在研究一个小 gem 并包含 simplecov到 spec_helper.rb 两行: require 'simplecov' SimpleCov.start 当我运行 rspec 测试时,si
我正在尝试像这样测试 minitest 文件: COVERAGE=true ruby -Itest test/views/info_pages_test.rb COVERAGE=true ruby -
我正在尝试像这样测试 minitest 文件: COVERAGE=true ruby -Itest test/views/info_pages_test.rb COVERAGE=true ruby -
当通过 rake 运行我的 rails 4 rspec 套件时,一切正常,但是当尝试运行 rake simplecov 时,我遇到了数百次失败,所有这些都带有 NoMethodError 类似于:
我安装了simplecov gem并添加了 require 'simplecov' SimpleCov.start 到 spec_helper.rb 文件,现在如果我在我的 some_file_sp
我正在尝试在 Ruby 项目中使用 simplecov gem。然而我失败得很惨。这是我到目前为止所做的。 我的项目结构是:项目文件夹 - 库 - 测试 我的测试在测试中,源代码在 lib 中。我在测
我正在开发一个小插件,其中包括 simplecov。 在我的 gem 文件中有一行: gem 'simplecov', :require => false, :group => :test 在我的测试
我们有一套 Selenium 测试。我想使用 SimpleCov 来覆盖这些测试的服务器端覆盖范围。首先,这是一种常见的方法吗?我在 SimpleCov/Selenium 上找不到任何内容。也许 Si
我有一个带有基于 Grape 的 API 的 Rails 4.2 应用程序。我开始使用 Rpsec 为它编写测试。我的测试效果很好,测试了我的预期。但是当我在终端运行 rspec 时,Simpleco
我有一个带有基于 Grape 的 API 的 Rails 4.2 应用程序。我开始使用 Rpsec 为它编写测试。我的测试效果很好,测试了我的预期。但是当我在终端运行 rspec 时,Simpleco
我在我的 Rails 应用程序中使用 SimpleCov 作为覆盖工具。在这个应用程序中,代码被划分为引擎,我根据一些输入将引擎包含到我的应用程序中。 simplcov 的问题是它只为应用程序内部的代
Ruby-2.0.0p247ActiveRecord-4.0.1 cucumber 1.3.10Aruba-0.5.3SimpleCove-0.8.2 我们在一个仍然使用 ActiveRecord 的
有没有人有使用 Cucumber 和代码覆盖工具 SimpleCov 的经验?我在 env.rb 文件中添加了以下几行,这样 Cucumber 就会触发 SimpleCov- require 'sim
你能告诉我如何设置 simplecov 来测试带有 rspec 的模型和仅带有 cucumber 的 Controller 吗? 我不喜欢 rspec 和 cucumber 覆盖混合在一起......
我是一名优秀的程序员,十分优秀!