場所

開発元?
http://works.dgic.co.jp/djwiki/Viewpage.do?pid=@46726F6E7450616765

Virtual Mock Objectがすごい

djUnitには、Virtual Mock Object というのがついている。
知らなかった!
これがあれば蜜結合クラスもテストできそうだ!

  • テスト対象
    package com.richtext.labo.model;
    public class Project {
      private String name;
      public static void main(String[] args) {
        Project project = new Project("AAA");
        System.out.println(project.getName());
      }
      public Project(String name) {
        this.name = name;
      }
      public String getName() {
        return this.name;
      }
    }
  • テストコード
    package com.richtext.labo.model;
    import jp.co.dgic.testing.framework.DJUnitTestCase;
    public class ProjectTest extends DJUnitTestCase {
      public void testConstructor() {
    //NG    addReturnValue(Project.class, "<init>", new Project("BBB"));
        addReturnValue(Project.class, "Project", new Project("BBB"));
        addReturnValue(Project.class, "getName", "BBB");
        Project.main(null);
      }
    }

addReturnValueで、クラスとメソッドを与えると、その呼び出しの戻り値を、渡したオブジェクトで置き換えてくれるというもの。
テスト対象のクラスを変更することなくテストできるのがすごいところ。
⇒バイトコード操作してるっぽい。

  • コンストラクタは、メソッド名のところ <init> でいいって書いてあったのだけど、それだとうまくいかなかった。
    そのままクラス名(コンストラクタだから)にしたらうまくいった。
    コンストラクタの差し替えは、場合によってはうまくいかなかった。。。

Groovyとの共存

GroovyTestCase のところを、DJUnitTestCase に置き換えれば、Groovy でも普通に djUnit 使えます。
このような親和性が高いところ、Groovyが買いなポイントかも。
覚書き/djUnit+Groovy

ANTタスクでの実行

覚書き/djUnit+ANT にまとめる予定。
Hudsonで実行できるようになるのだ!


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-02-14 (火) 00:59:01 (2105d)