rspec + rcov でテストカバレージをとることを試した
rspec + rcov でテストカバレージをとることを試した。
0. ファイル構成
1. 対象 ruby クラス
2. spec ファイル
3. Rakefile
4. 実行結果
0. ファイル構成
==============
|-- Rakefile
|-- spec
| `-- foo_spec.rb
`-- src
`-- foo.rb
1. 対象 ruby クラス
==================
$ cat foo.rb
class Foo
def add x, y
x + y
enddef sub x, y
x - y
enddef div x, y # not use
x / y
end
end
2. spec ファイル
===============
$ cat foo_spec.rb
require 'foo'describe Foo, "add " do
it "should return sum." do
f = Foo.new
f.add(1,2).should == 3
end
enddescribe Foo, "sub " do
it "should return sub." do
f = Foo.new
f.sub(1,2).should == -1
end
end
3. Rakefile
============
$ cat Rakefile
require 'rake'
require 'spec/rake/spectask'desc "Run all examples with Rcov"
Spec::Rake::SpecTask.new('rspec_with_rcov') do |t|
t.spec_files = FileList['spec/**/*.rb']
t.libs << "src"
# t.warning = true
t.rcov = true
t.spec_opts = ['--format', 'specdoc', '--color']
t.rcov_opts = ['--exclude', 'spec']
enddesc "Run rspec"
Spec::Rake::SpecTask.new('rspec') do |t|
t.spec_files = FileList['spec/**/*.rb']
t.libs << "src"
t.spec_opts = ['--format', 'specdoc', '--color']
endtask :clean =>[:clobber_rspec_with_rcov] do
sh "rm -f *~"
sh "rm -f */*~"
end
4. 実行結果
============
$ rake rspec_with_rcov
(in /Users/kato/work/src/ruby/rspec/rcov)
Foo add
- should return sum.
Foo sub
- should return sub.
Finished in 0.077517 seconds
2 examples, 0 failures
coverge/*.html が生成される。(rake clean で削除できる)
# わざと、spec から漏れているメソッドをつくり、coverage でそれが報告されていることを確かめている。
生成されたレポートのスクリーンショット
現状は jruby で gem install rcov できない。
java + jruby で、 java/ruby のどちらのコードも区別なくカバレージ計測できようになるべきだ。
« ピックアップ: NeoOffice 2.2.2 is released, 基礎体力より基礎代謝, etc... | トップページ | ピックアップ: Gmail保存容量大幅拡大のお知らせ, Webサイトの質を高める為には低機能パソコンが必要, etc... »
この記事へのコメントは終了しました。
« ピックアップ: NeoOffice 2.2.2 is released, 基礎体力より基礎代謝, etc... | トップページ | ピックアップ: Gmail保存容量大幅拡大のお知らせ, Webサイトの質を高める為には低機能パソコンが必要, etc... »
コメント