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