image

  • フォト Amazonギフト券
    ※この時計の時刻は、閲覧しているパソコンのものであり、必ずしも正確な時間とは限りません

検索

最近のトラックバック

無料ブログはココログ

« ピックアップ:一行で IE の JavaScript を高速化, グーグルやヤフーが実践する製品開発手法, etc... | トップページ | ピックアップ:イノベーションの神話, XMLが嫌われている, etc... »

2007-10-13

rspec で java クラスをテストする例

rspec をつかって java クラスをテストする例を作ってみた。

1. 簡単な java クラスを定義。
2. Rakefile をつくる。
     jruby -S spec ... として、上で作成した java クラスのメソッドの挙動をテストする。

1. java クラス
===========

$ cat MyClass.java
package foo;

public class MyClass {
    public int add(int a, int b) {
        return a + b;
    }

    public int sub(int a, int b) {
        return a - b;
    }

    public static void main(String[] args) {
        System.out.println("This is MyClass.");
    }
}

2. Rakefile
=========

$ cat Rakefile
require 'rake'

MYLIB ="build/lib"
MYCLASS_JAR = "MyClass.jar"

task :default => :compile

desc "Compile the native Java code."
task :compile do
  mkdir_p "build/classes"
  sh "javac -d build/classes #{FileList['**/*.java'].join(' ')}"
end

desc "Generate jar."
task :jar =>[:compile] do
  mkdir_p "#{MYLIB}"
  sh "jar cvf #{MYLIB}/#{MYCLASS_JAR} -C build/classes/ ."
end

desc "Remove build folder"
task :clean do
  rm_rf "build"
  sh "rm -f *~"
end

desc "Run sample program."
task :run_sample => [:jar] do
  sh "CLASSPATH=#{MYLIB}/#{MYCLASS_JAR}:$CLASSPATH;jruby callMyClass.rb"
end

desc "Run rspec."
task :spec =>[:jar] do
  sh "CLASSPATH=./build/lib/MyClass.jar:$CLASSPATH;jruby -S spec -c -fs MyClass_spec.rb"
end

まだ、Rakefile の書き方に慣れていない。もっと洗練した書き方ができるように勉強しないと...

spec ファイル
===========

$ cat MyClass.rb

require 'rubygems'
require 'java'

include_class 'foo.MyClass'

describe MyClass, "add method" do
it "should return sum" do
   myClass = MyClass.new
   myClass.add(1,2).should == 3
end
end

describe MyClass, "sub method" do
it "should return sub" do
   myClass = MyClass.new
   myClass.sub(1,2).should == -1
end
end

ここでは
  add(1,2) が 3 を返すこと
  sub(1.2) が -1 を返すこと
をチェックしている。

実行例:
======

$ rake spec
javac -d build/classes MyClass.java
jar cvf build/lib/MyClass.jar -C build/classes/ .
Java::Foo::MyClass add method
- should return sum

Java::Foo::MyClass sub method
- should return sub

Finished in 0.339 seconds

2 examples, 0 failures

おまけ:
=======
ruby から java クラスを呼び出す簡単な例

$cat callMyClass.rb
# set CLASSPATH=$CLASSPATH:MyClass.jar
# jruby callMyClass.rb

require 'rubygems'
require 'java'

include_class 'foo.MyClass'

obj = MyClass.new
p obj.add(1,10)
p obj.sub(1,10)

xfy/xvcd 用につくった xpath関数、インストラクションの簡易テストに junit でなく
Rspec をつかうことも面白いかもしれない。

« ピックアップ:一行で IE の JavaScript を高速化, グーグルやヤフーが実践する製品開発手法, etc... | トップページ | ピックアップ:イノベーションの神話, XMLが嫌われている, etc... »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/184434/16744437

この記事へのトラックバック一覧です: rspec で java クラスをテストする例:

« ピックアップ:一行で IE の JavaScript を高速化, グーグルやヤフーが実践する製品開発手法, etc... | トップページ | ピックアップ:イノベーションの神話, XMLが嫌われている, etc... »

mokuji

2013年12月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

google

  • twitter
  • __
  • _
    Googleボットチェッカー

合わせて読む

  • 合わせて読む
    フィードメーター - katoy: cocolog あわせて読みたい

リンク