gpt4 book ai didi

ruby - Rails 测试显示 0% 全部通过时通过

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:07 26 4
gpt4 key购买 nike

我的 Rails 应用程序通过了测试,但随后显示 0% 通过。它是一个转换为 3.1 的 Rails 3 应用程序。

5 tests, 11 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
0% passed

如果我生成一个新的 Rails 3.1 应用程序,它没有这个“通过”行。

1 tests, 1 assertions, 0 failures, 0 errors, 0 skips

两者都在 1.9.2 p290 下运行。

我尝试删除 test-unit 但这似乎没有什么不同,我认为没有其他突出的原因会导致它。我猜有些事情正在触发使用不同的测试运行程序。

这些是为我的应用安装的 gem:

actionmailer (3.1.1)
actionpack (3.1.1)
activemodel (3.1.1)
activerecord (3.1.1)
activeresource (3.1.1)
activesupport (3.1.1)
ansi (1.3.0)
archive-tar-minitar (0.5.2)
arel (2.2.1)
bcrypt-ruby (3.0.1)
bootstrap-sass (1.3.0)
builder (3.0.0)
bundler (1.0.21)
coderay (0.9.8)
coffee-rails (3.1.1)
coffee-script (2.2.0)
coffee-script-source (1.1.2)
columnize (0.3.4)
devise (1.4.7)
devise_rpx_connectable (0.2.2)
enumerated_attribute (0.2.16)
erubis (2.7.0)
execjs (1.2.9)
haml (3.1.3)
hike (1.2.1)
i18n (0.6.0)
jquery-rails (1.0.14)
json (1.6.1)
json_pure (1.6.1)
linecache19 (0.5.12)
mail (2.3.0)
meta_programming (0.2.2)
method_source (0.6.6)
mime-types (1.16)
multi_json (1.0.3)
orm_adapter (0.0.5)
polyglot (0.3.2)
pry (0.9.6.2)
pry-doc (0.3.0)
rack (1.3.4)
rack-cache (1.1)
rack-mount (0.8.3)
rack-ssl (1.3.2)
rack-test (0.6.1)
rack-webconsole (0.1.2)
rails (3.1.1)
railties (3.1.1)
rake (0.9.2)
rdoc (3.10)
rpx_now (0.6.24)
ruby-debug-base19 (0.11.25)
ruby-debug19 (0.11.6)
ruby_core_source (0.1.5)
ruby_parser (2.0.6)
sass (3.1.10)
sass-rails (3.1.4)
sexp_processor (3.0.7)
slop (2.1.0)
sprockets (2.0.2)
sqlite3 (1.3.4)
test-unit (2.4.0)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
turn (0.8.2)
tzinfo (0.3.30)
uglifier (1.0.3)
warden (1.0.6)
yard (0.7.2)

这就是我使用默认的 rails new'd 应用程序得到的结果

actionmailer (3.1.1)
actionpack (3.1.1)
activemodel (3.1.1)
activerecord (3.1.1)
activeresource (3.1.1)
activesupport (3.1.1)
ansi (1.3.0)
arel (2.2.1)
builder (3.0.0)
bundler (1.0.21)
coffee-rails (3.1.1)
coffee-script (2.2.0)
coffee-script-source (1.1.2)
erubis (2.7.0)
execjs (1.2.9)
hike (1.2.1)
i18n (0.6.0)
jquery-rails (1.0.14)
json (1.6.1)
mail (2.3.0)
mime-types (1.16)
multi_json (1.0.3)
polyglot (0.3.2)
rack (1.3.4)
rack-cache (1.1)
rack-mount (0.8.3)
rack-ssl (1.3.2)
rack-test (0.6.1)
rails (3.1.1)
railties (3.1.1)
rake (0.9.2)
rdoc (3.10)
sass (3.1.10)
sass-rails (3.1.4)
sprockets (2.0.2)
sqlite3 (1.3.4)
test-unit (2.4.0)
thor (0.14.6)
tilt (1.3.3)
treetop (1.4.10)
turn (0.8.2)
tzinfo (0.3.30)
uglifier (1.0.3)

编辑

我已经从应用程序中删除所有内容并将其推送到 github - https://github.com/kimptoc/zero-percent-bugette当我运行“rake”时,我仍然得到 0% 的通过率:

$ rake
Loaded suite /Users/kimptoc/.rvm/gems/ruby-1.9.2-p290@p-viadropbox31/gems/rake-0.9.2.2/lib/rake/rake_test_loader
Started

Finished in 0.000897 seconds.

1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
0% passed

1114.83 tests/s, 1114.83 assertions/s
Coverage report generated for /Users/kimptoc/.rvm/gems/ruby-1.9.2-p290@p-viadropbox31/gems/rake-0.9.2.2/lib/rake/rake_test_loader.rb to /Users/kimptoc/dev/ruby/fran/zero-percent/coverage. 4 / 4 LOC (100.0%) covered.

最佳答案

如果您在 Rails 中使用 test-unit,那么您将无能为力。我相信这是 Rails 附带的 activesupport gem 中的错误。更详细:

通常,test-unit 有一个方法add_pass 可以增加通过测试的数量。这在 run(...) 方法(testcase.rb 文件)中调用。但是,activesupport 用它自己的实现隐藏/覆盖了这个方法。它是setup_and_teardown.rb文件中的run(...)方法(方法全称是ActiveSupport::Testing::SetupAndTeardown::ForClassicTestUnit#run ()

我修改了这个方法如下:

    def run(result)
return if @method_name.to_s == "default_test"

mocha_counter = retrieve_mocha_counter(result)
yield(Test::Unit::TestCase::STARTED, name)
@_result = result

begin
begin
_run_setup_callbacks do
setup
__send__(@method_name)
mocha_verify(mocha_counter) if mocha_counter
end
result.add_pass # XXXXXXXXXXXX My Addition to count passed tests XXXXXXXXXX
rescue Mocha::ExpectationError => e
add_failure(e.message, e.backtrace)
rescue Test::Unit::AssertionFailedError => e
add_failure(e.message, e.backtrace)
rescue Exception => e
raise if PASSTHROUGH_EXCEPTIONS.include?(e.class)
add_error(e)
ensure
begin
teardown
_run_teardown_callbacks
rescue Test::Unit::AssertionFailedError => e
add_failure(e.message, e.backtrace)
rescue Exception => e
raise if PASSTHROUGH_EXCEPTIONS.include?(e.class)
add_error(e)
end
end
ensure
mocha_teardown if mocha_counter
end

result.add_run
yield(Test::Unit::TestCase::FINISHED, name)
end

我添加了 result.add_pass ,它不在那里,现在百分比应该没问题。

更新:为了帮助您整合此更改并亲自测试/查看,您可以使用以下命令克隆我创建的要点:

git clone git://gist.github.com/1324512.git gist-1324512

这将创建一个文件,名称为:active_support_test_unit_pass_count.rb

将其移至 test 文件夹,其中 test_helper.rb 文件所在的文件夹,并在 test_helper.rb 文件中要求它,就在定义之前ActiveSupport::TestCase 类的:

require 'active_support_test_unit_pass_count'

class ActiveSupport::TestCase

....

然后运行您的测试并查看百分比结果。对我来说......它工作正常。

关于ruby - Rails 测试显示 0% 全部通过时通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7706487/

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