LuntBuild,dJunit連携


設定ではまったのでメモを残しておきます。
(まだ最後まで動いてないのでうそがあるかもしれません。)


  • eclipseからdJunit動かすとメモリが足りなくて落ちる。
→Antでタスクで動かせばOK?

  • LuntBuidでAntキックして、自動的かつ頻繁ににレグレッションテストを走らせたい。
(バージョンアップ改修で改修箇所が結構大規模なので)

  • プロジェクトメンバーのタスクとしてカバレッジを意識してもらい、テストもれをなくしたい。

等の理由でLuntBuild+DJunitを考えた。

その中でいくつか問題が出たので、メモに残す。
使用バージョンは
LuntBuild 1.6.0
dJunit 0.8.4


ASMのjarは重複させてはならない(かも)


build.xmlを作成し実行すると

  [djunit] Caused by: java.lang.NoSuchMethodError: jp.co.dgic.testing.common.asm.AsmClassReader.accept(Lorg/objectweb/asm/ClassVisitor;I)V
  [djunit] 	at jp.co.dgic.testing.common.asm3x.AsmClassReader3x.accept(AsmClassReader3x.java:22)
  [djunit] 	at jp.co.dgic.testing.common.AsmClassModifier.getModifiedClass(AsmClassModifier.java:51)

このようなエラーが発生。

クラスパスの設定等色々調べたが、どうやら、libのjarに他の物が入っているとエラーになるらしい。
というか外したらエラーが解消。
bulid.xml中では
<djunit>タグのasmversionが記述されていないとデフォルトは3になるらしい。
ので、指定しているビルドパスのlibディレクトリから
asm-2.2.1.jarとasm-1.5.3.jarを取り除き
asm-3.1.jarとasm-attrs-1.5.3.jar(いらないかも)を残して動かした。



実際にbulderを作成し、djunitのantScriptを記述し、テストを走らせると
以下のようなエラーが発生し、テストがうまく通らない。


ESSR0060]クラス(xxx.xxxxxx.Xxxxxx)のメソッド(init)の設定に失敗しました。
理由はorg.seasar.dao.MethodSetupFailureRuntimeException: [EDAO0019]xxx.dao.XxxxxxDaoのsearchXxxxxxxNoメソッドの初期化時に例外が発生しました。
理由はorg.seasar.extension.jdbc.ColumnNotFoundRuntimeException: [ESSR0068]テーブル(xxxxxxx)のカラム(xxxxxxxId)が見つかりません

エラーの内容からDB接続やdiconファイルを頑張ってみていたら原因は結局
DAOが食っている、sqlファイルがなかったというのが原因だった。
エラーメッセージが悪いなぁ。
コピータスクで忘れずにコピーしてやると正常に動作した。

antで記述しているので、コンパイル後のソースは自動的にtoDirにコピーされるが
sqlファイルや、propertiesファイル等はコピーされない。
ここを忘れずにちゃんとコピーしてやらないと、テストの時に意味不明のエラーになることが多い。

気をつけないと。


dJunitのレポートがちゃんと出ない


dJunitのカバレッジレポートでソースは表示されてるんだけど
lineが全部0でlineカバレッジ100%になってしまう問題

build.xmlの中身の問題だと思われる。
djunitのWebページ(整理されてなくて見ずらい。。。)
のサンプルを取ってきてそちらを参考に手直し。
Webページに直接書いてある形だと駄目だった。

<djunit printsummary="yes" targetSrcDir="${src.main}" coverage="yes" >

だけにするとカバレッジレポートが正常に出力された。


showoutput="yes"とdir="./hoge"
とか余分なものを削除。
詳細は謎。

どうやらjcoverage.serが正しく更新されないようです。

2009/08/17
eclipseでもdjunitを使っていて、
こちらのtest時に作成されたjcoverage.serが上書きされていた事が原因な可能性あり。
変に更新されていて上書きできなかったかな?
.svnignoreに追加するようにする



antがOutOfMemoryで途中で失敗になってしまう問題


antを動かすサーバの環境変数でantのメモリを増やしてやる。
ant.batって実行部分が


"%_JAVACMD%" %ANT_OPTS% -classpath ~ほにゃらら

と記述されてるんだけど
ANT_OPTSって変数はbatの中では定義されてない。
ということで定義してやればよい。

環境変数か、batの中で
ANT_OPTSの値を -Xms256m -Xmx256m
等として回避する。
最終更新:2009年08月17日 14:21