More detailed Test::Unit error report

Hi,

I’m starting to use Test::Unit to create unit tests for my Rails
Applications/Plugins. I don’t have much experience in Ruby Unit Testing.
The
problem is that the output report is very simple and it is very
difficult to
discover where is the error. Test::Unit does not show the line number of
the
error and the Stack Trace printed using the --trace option does not help
either.

Here is the output of my test:

/home/gustavo/.rvm/rubies/ruby-1.9.2-p180/bin/ruby -e
$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)
/home/gustavo/.rvm/rubies/ruby-1.9.2-p180/bin/rake test:plugins --trace
Testing started at 23:18 …
(in /home/gustavo/Projetos/seo_apps)
** Invoke test:plugins (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute test:plugins

NoMethodError: undefined method score=' for #<Report:0xa1f269c> 1 tests, 0 assertions, 0 failures, 1 errors, 0 pendings, 0 omissions, 0 notifications Test suite finished: 0.132010162 seconds rake aborted! Command failed with status (1): [/home/gustavo/.rvm/rubies/ruby-1.9.2-p180/...] /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:995:inblock in sh’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1010:in
call' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1010:insh’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1094:in
sh' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1029:inruby’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1094:in
ruby' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.5/lib/rails/test_unit/testing.rake:26:inblock (2 levels) in define’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1112:in
verbose' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.5/lib/rails/test_unit/testing.rake:11:inblock in define’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:in
call' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:636:inblock in execute’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:in
each' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:631:inexecute’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:597:in
block in invoke_with_call_chain' /home/gustavo/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/monitor.rb:201:inmon_synchronize’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:590:in
invoke_with_call_chain' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:583:ininvoke’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2051:in
invoke_task' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:inblock (2 levels) in top_level’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:in
each' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2029:inblock in top_level’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2068:in
standard_exception_handling' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2023:intop_level’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2001:in
block in run' /home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:2068:instandard_exception_handling’
/home/gustavo/.rvm/gems/ruby-1.9.2-p180/gems/rake-0.8.7/lib/rake.rb:1998:in
run' /home/gustavo/.rvm/rubies/ruby-1.9.2-p180/bin/rake:35:in<top
(required)>’
-e:1:in load' -e:1:in

Process finished with exit code 1

Please, anyone have an idea of how to improve this error output??

Thanks in advance,
Gustavo

On 1 May 2011, at 03:20, Gustavo de S Carvalho
Honorato[email protected] wrote:

Hi,

I’m starting to use Test::Unit to create unit tests for my Rails
Applications/Plugins. I don’t have much experience in Ruby Unit Testing. The
problem is that the output report is very simple and it is very difficult to
discover where is the error. Test::Unit does not show the line number of the error
and the Stack Trace printed using the --trace option does not help either.

That’s not the normal failing test output - it looks to me like things
are blowing up before your test even gets run. Do you have any idea
where this score= problem could be coming from?

Fred

On Sun, May 1, 2011 at 4:57 AM, Frederick C.
<[email protected]

wrote:

discover where is the error. Test::Unit does not show the line number of the
error and the Stack Trace printed using the --trace option does not help
either.

That’s not the normal failing test output - it looks to me like things are
blowing up before your test even gets run. Do you have any idea where this
score= problem could be coming from?

Yes. The problem is inside the test. I’m testing an Rails plugin I’m
developing. I’ve created I fake ‘Report’ class to test my ‘acts_as’
method.
Here is the Report class:

class Report

include SeoAuditor

declare_auditor do
category ‘Server’ do
criteria ‘Response time’, :max_score => 5 do

  end
end

category 'Title Tag' do
  analyzed_text { 'Texto Fake' }

  criteria 'Title Tag found', :max_score => 5 do

  end

  criteria 'Title Tag has text', :max_score => 5 do

  end
end

end
end

declare_auditor is the ‘acts_as’ method and this is my test case:

test “Categories order” do
report = Report.new
result = report.audit

categories = result.categories

assert_equal categories[0].name, 'Server'
assert_equal categories[1].name, 'Title Tag'

end

I have discovered where the error is: it occurs when I call the audit
method
(in 3rd line), which is created in Report class by using declare_auditor
method, but the real problem is the lacking of information of the errors
in
the output of the Test::Unit.

Any help would be appreciated.

Thanks,
Gustavo