Java/jcoverage
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
//ここにコンテンツを記述します。
#contents
***概要 [#t7940701]
[[jcoverage:http://www.jcoverage.com/]]とは、単体テスト実...
コードカバレッジツールにもいろいろ方式があるのですが、こ...
-Antタスクなどで、バイトコード(クラスファイル)に対してカ...
-コードが稼動すると、埋め込まれたデバッグプログラムがファ...
-Antタスクなどで、そのファイルを元にカバレッジなどを色分...
といった方式になっています。よってJUnitで単体テストを実施...
#ref(basic.png)
似たようなツールとして、CoberturaやCloverがあるのですが、...
このようなツールって、クライアント環境だけならエイヤでや...
で、ようやく動かしかたぼんやりとではあるのですがわかって...
***ダウンロード [#df0b7b73]
http://www.jcoverage.com/gpl-license.html よりダウンロー...
**基礎 [#a74f2435]
***準備 [#qbea4e71]
まずは基礎の基礎から。しつこいですが、ポイントはコンパイ...
やってみます。適当にEclipseでプロジェクトを作成します。そ...
#ref(01.png)
とりあえずここまでで、Eclipse上からJunitを起動することが...
***antタスクの作成 [#y27e5aa2]
jcoverageにはAntタスクが付属しています。使用するのは主に
:instrument|デバッグコードをクラスに埋め込むときに使いま...
:report|出力された収集結果ファイル(jcoverage.ser)からレポ...
:merge|複数の結果ファイルをマージしてひとつのファイルにし...
です。
全てAntでやる場合は、ソースコードのコンパイル -> instrume...
#ref(build.xml)
#ref(build.properties)
-クラスパス設定
<path id="project.class.path">
<pathelement path="${class.dir}" />
<fileset dir="${jar.dir}">
<include name="**/*.jar" />
</fileset>
</path>
-タスク定義
<taskdef classpathref="project.class.path" resource="t...
-テスト対象のコンパイル
<target name="javac.src" depends="init" description="...
<mkdir dir="${class.dir}" />
<!-- リソースファイルなどをコピーしている -->
<copy todir="${class.dir}" preservelastmodified="yes">
<fileset dir="${src.dir}">
<include name="**" />
<exclude name="**/**.java" />
</fileset>
</copy>
<javac srcdir="${src.dir}" destdir="${class.dir}" en...
memoryInitialSize="256M" fork="yes" memoryMaximumSi...
<classpath refid="project.class.path" />
</javac>
</target>
-テストクラスのコンパイル
<target name="test.javac" depends="javac.src" descript...
<mkdir dir="${class.dir}" />
<!-- リソースファイルなどをコピーしている -->
<copy todir="${class.dir}" preservelastmodified="yes">
<fileset dir="${test.src.dir}">
<include name="**" />
<exclude name="**/**.java" />
</fileset>
</copy>
<javac srcdir="${test.src.dir}" destdir="${class.dir...
memoryInitialSize="256M" fork="yes" memoryMaximumS...
<classpath refid="project.class.path" />
</javac>
</target>
-デバッグコードの埋め込み
<target name="instrument" description="Add jcoverage i...
<instrument todir="${build.instrumented.dir}">
<ignore regex="org.apache.log4j.*" />
<fileset dir="${class.dir}">
<include name="**/*.class" />
</fileset>
<classpath refid="project.class.path" />
</instrument>
<!-- リソースファイルなどをコピーしている -->
<copy todir="${build.instrumented.dir}" preservelast...
<fileset dir="${class.dir}">
<include name="**" />
<exclude name="**/*.class" />
</fileset>
</copy>
<!-- 一端クラスディレクトリを消して -->
<delete dir="${class.dir}" />
<mkdir dir="${class.dir}" />
<!-- デバッグ込みクラスファイルをコピー -->
<copy todir="${class.dir}" preservelastmodified="yes">
<fileset dir="${build.instrumented.dir}">
<include name="**" />
</fileset>
</copy>
</target>
ここまででとりあえず実行してみます。Eclipse上からAntを実...
ant clean javac instrument
です。実行結果は以下のようになりました。
Buildfile: d:\xxxxxx\JCoverageClient\build.xml
init:
[echo] Apache Ant version 1.6.2 compiled on July 16...
[echo] Java ver. 1.3
[echo] JCoverageTest
[echo] BaseDir: D:\xxxxxx\JCoverageClient
[echo] 日付:2005/09/03
clean:
[delete] Deleting directory D:\xxxxxx\JCoverageClient...
[delete] Deleting directory D:\xxxxxx\JCoverageClient...
[delete] Deleting directory D:\xxxxxx\JCoverageClient...
javac.src:
[mkdir] Created dir: D:\xxxxxx\JCoverageClient\classes
[copy] Copied 1 empty directory to 1 empty director...
[javac] Compiling 1 source file to D:\xxxxxx\JCovera...
test.javac:
[javac] Compiling 1 source file to D:\xxxxxx\JCovera...
javac:
instrument:
[instrument] jcoverage 1.0.5 copyright (c)2003 jcoverage...
[instrument] jcoverage is licensed under the GNU General...
[instrument] jcoverage comes with ABSOLUTELY NO WARRANTY
[instrument] instrumenting 2 classes to D:\xxxxxx\JCover...
[delete] Deleting directory D:\xxxxxx\JCoverageClient...
[mkdir] Created dir: D:\xxxxxx\JCoverageClient\classes
[copy] Copying 2 files to D:\xxxxxx\JCoverageClient...
BUILD SUCCESSFUL
Total time: 6 seconds
-EclipseからJUにtJUnitを実行
Antで実行するタスクもあるのですが、とりあえず、Eclipseか...
-テストを実行した後のレポーティング
<target name="coverage" description="HTML and XML cove...
<report srcdir="${src.dir}" destdir="${build.coverag...
<classpath refid="project.class.path" />
</report>
<report srcdir="${src.dir}" destdir="${build.coverag...
<classpath refid="project.class.path" />
</report>
</target>
以上で完成です。実行結果は以下のようになりました。
#ref(result01.png)
カバレッジの一覧
#ref(result02.png)
詳細
ちなみに、テスト対象のクラスとテストクラスは以下の通り。
-Hoge.java
/*******************************************************...
* Copyright (c) 2005 Masatomi KINO.
* All rights reserved.
* $Id$
*******************************************************...
//作成日: 2005/09/03
package kino;
/**
* @author Masatomi KINO
* @version $Revision$
*/
public class Hoge {
/**
* どうでもいいロジック。引数両方0なら50を返す。
* aだけ0ならbを100倍して返す。 それ以外は足して返...
*
* @param a
* @param b
* @return
*/
public int add(int a, int b) {
if (a == 0 && b == 0) {
return 50;
} else if (a == 0) {
return b * 100;
}
return a + b;
}
}
-HogeTest.java
/*******************************************************...
* Copyright (c) 2005 Masatomi KINO.
* All rights reserved.
* $Id$
*******************************************************...
//作成日: 2005/09/03
package kino;
import junit.framework.TestCase;
/**
* @author Masatomi KINO
* @version $Revision$
*/
public class HogeTest extends TestCase {
private Hoge hoge;
public static void main(String[] args) {
junit.textui.TestRunner.run(HogeTest.class);
}
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
public final void testAdd() {
hoge = new Hoge();
assertEquals(10000, hoge.add(0, 100));
assertEquals(200, hoge.add(100, 100));
// assertEquals(50, hoge.add(0,0));
}
}
***Antの注意点 [#b21c0c47]
こんな障害に巻き込まれました。
-EclipseからAntでJunitを実行するとき、jarがねえって怒られ...
-Antでコンパイル&InstrumentしたクラスをJunitで実行しよう...
--コンパイルするコンパイラのバージョンと実行時のJREのバー...
-うえには書きませんでしたが、JUnitタスクを実行すると、htm...
**Servletなどサーバサイド、J2EE環境で使う。 [#k3738780]
[[疲れました。。。また書きます。>Java/jcoverage/Servletな...
**関連リンク [#r33cad0f]
#ls2
-[[djUnit:http://eclipsewiki.net/eclipse/?djUnit]]
----
この記事は
#vote(おもしろかった[21],そうでもない[2])
- Thank you for your job!! -- [[Helen]] &new{2007-09-20 (...
- 気づいたら変な行(コメント行等)に未実行のマーカーがつ...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
//ここにコンテンツを記述します。
#contents
***概要 [#t7940701]
[[jcoverage:http://www.jcoverage.com/]]とは、単体テスト実...
コードカバレッジツールにもいろいろ方式があるのですが、こ...
-Antタスクなどで、バイトコード(クラスファイル)に対してカ...
-コードが稼動すると、埋め込まれたデバッグプログラムがファ...
-Antタスクなどで、そのファイルを元にカバレッジなどを色分...
といった方式になっています。よってJUnitで単体テストを実施...
#ref(basic.png)
似たようなツールとして、CoberturaやCloverがあるのですが、...
このようなツールって、クライアント環境だけならエイヤでや...
で、ようやく動かしかたぼんやりとではあるのですがわかって...
***ダウンロード [#df0b7b73]
http://www.jcoverage.com/gpl-license.html よりダウンロー...
**基礎 [#a74f2435]
***準備 [#qbea4e71]
まずは基礎の基礎から。しつこいですが、ポイントはコンパイ...
やってみます。適当にEclipseでプロジェクトを作成します。そ...
#ref(01.png)
とりあえずここまでで、Eclipse上からJunitを起動することが...
***antタスクの作成 [#y27e5aa2]
jcoverageにはAntタスクが付属しています。使用するのは主に
:instrument|デバッグコードをクラスに埋め込むときに使いま...
:report|出力された収集結果ファイル(jcoverage.ser)からレポ...
:merge|複数の結果ファイルをマージしてひとつのファイルにし...
です。
全てAntでやる場合は、ソースコードのコンパイル -> instrume...
#ref(build.xml)
#ref(build.properties)
-クラスパス設定
<path id="project.class.path">
<pathelement path="${class.dir}" />
<fileset dir="${jar.dir}">
<include name="**/*.jar" />
</fileset>
</path>
-タスク定義
<taskdef classpathref="project.class.path" resource="t...
-テスト対象のコンパイル
<target name="javac.src" depends="init" description="...
<mkdir dir="${class.dir}" />
<!-- リソースファイルなどをコピーしている -->
<copy todir="${class.dir}" preservelastmodified="yes">
<fileset dir="${src.dir}">
<include name="**" />
<exclude name="**/**.java" />
</fileset>
</copy>
<javac srcdir="${src.dir}" destdir="${class.dir}" en...
memoryInitialSize="256M" fork="yes" memoryMaximumSi...
<classpath refid="project.class.path" />
</javac>
</target>
-テストクラスのコンパイル
<target name="test.javac" depends="javac.src" descript...
<mkdir dir="${class.dir}" />
<!-- リソースファイルなどをコピーしている -->
<copy todir="${class.dir}" preservelastmodified="yes">
<fileset dir="${test.src.dir}">
<include name="**" />
<exclude name="**/**.java" />
</fileset>
</copy>
<javac srcdir="${test.src.dir}" destdir="${class.dir...
memoryInitialSize="256M" fork="yes" memoryMaximumS...
<classpath refid="project.class.path" />
</javac>
</target>
-デバッグコードの埋め込み
<target name="instrument" description="Add jcoverage i...
<instrument todir="${build.instrumented.dir}">
<ignore regex="org.apache.log4j.*" />
<fileset dir="${class.dir}">
<include name="**/*.class" />
</fileset>
<classpath refid="project.class.path" />
</instrument>
<!-- リソースファイルなどをコピーしている -->
<copy todir="${build.instrumented.dir}" preservelast...
<fileset dir="${class.dir}">
<include name="**" />
<exclude name="**/*.class" />
</fileset>
</copy>
<!-- 一端クラスディレクトリを消して -->
<delete dir="${class.dir}" />
<mkdir dir="${class.dir}" />
<!-- デバッグ込みクラスファイルをコピー -->
<copy todir="${class.dir}" preservelastmodified="yes">
<fileset dir="${build.instrumented.dir}">
<include name="**" />
</fileset>
</copy>
</target>
ここまででとりあえず実行してみます。Eclipse上からAntを実...
ant clean javac instrument
です。実行結果は以下のようになりました。
Buildfile: d:\xxxxxx\JCoverageClient\build.xml
init:
[echo] Apache Ant version 1.6.2 compiled on July 16...
[echo] Java ver. 1.3
[echo] JCoverageTest
[echo] BaseDir: D:\xxxxxx\JCoverageClient
[echo] 日付:2005/09/03
clean:
[delete] Deleting directory D:\xxxxxx\JCoverageClient...
[delete] Deleting directory D:\xxxxxx\JCoverageClient...
[delete] Deleting directory D:\xxxxxx\JCoverageClient...
javac.src:
[mkdir] Created dir: D:\xxxxxx\JCoverageClient\classes
[copy] Copied 1 empty directory to 1 empty director...
[javac] Compiling 1 source file to D:\xxxxxx\JCovera...
test.javac:
[javac] Compiling 1 source file to D:\xxxxxx\JCovera...
javac:
instrument:
[instrument] jcoverage 1.0.5 copyright (c)2003 jcoverage...
[instrument] jcoverage is licensed under the GNU General...
[instrument] jcoverage comes with ABSOLUTELY NO WARRANTY
[instrument] instrumenting 2 classes to D:\xxxxxx\JCover...
[delete] Deleting directory D:\xxxxxx\JCoverageClient...
[mkdir] Created dir: D:\xxxxxx\JCoverageClient\classes
[copy] Copying 2 files to D:\xxxxxx\JCoverageClient...
BUILD SUCCESSFUL
Total time: 6 seconds
-EclipseからJUにtJUnitを実行
Antで実行するタスクもあるのですが、とりあえず、Eclipseか...
-テストを実行した後のレポーティング
<target name="coverage" description="HTML and XML cove...
<report srcdir="${src.dir}" destdir="${build.coverag...
<classpath refid="project.class.path" />
</report>
<report srcdir="${src.dir}" destdir="${build.coverag...
<classpath refid="project.class.path" />
</report>
</target>
以上で完成です。実行結果は以下のようになりました。
#ref(result01.png)
カバレッジの一覧
#ref(result02.png)
詳細
ちなみに、テスト対象のクラスとテストクラスは以下の通り。
-Hoge.java
/*******************************************************...
* Copyright (c) 2005 Masatomi KINO.
* All rights reserved.
* $Id$
*******************************************************...
//作成日: 2005/09/03
package kino;
/**
* @author Masatomi KINO
* @version $Revision$
*/
public class Hoge {
/**
* どうでもいいロジック。引数両方0なら50を返す。
* aだけ0ならbを100倍して返す。 それ以外は足して返...
*
* @param a
* @param b
* @return
*/
public int add(int a, int b) {
if (a == 0 && b == 0) {
return 50;
} else if (a == 0) {
return b * 100;
}
return a + b;
}
}
-HogeTest.java
/*******************************************************...
* Copyright (c) 2005 Masatomi KINO.
* All rights reserved.
* $Id$
*******************************************************...
//作成日: 2005/09/03
package kino;
import junit.framework.TestCase;
/**
* @author Masatomi KINO
* @version $Revision$
*/
public class HogeTest extends TestCase {
private Hoge hoge;
public static void main(String[] args) {
junit.textui.TestRunner.run(HogeTest.class);
}
/*
* @see TestCase#setUp()
*/
protected void setUp() throws Exception {
super.setUp();
}
/*
* @see TestCase#tearDown()
*/
protected void tearDown() throws Exception {
super.tearDown();
}
public final void testAdd() {
hoge = new Hoge();
assertEquals(10000, hoge.add(0, 100));
assertEquals(200, hoge.add(100, 100));
// assertEquals(50, hoge.add(0,0));
}
}
***Antの注意点 [#b21c0c47]
こんな障害に巻き込まれました。
-EclipseからAntでJunitを実行するとき、jarがねえって怒られ...
-Antでコンパイル&InstrumentしたクラスをJunitで実行しよう...
--コンパイルするコンパイラのバージョンと実行時のJREのバー...
-うえには書きませんでしたが、JUnitタスクを実行すると、htm...
**Servletなどサーバサイド、J2EE環境で使う。 [#k3738780]
[[疲れました。。。また書きます。>Java/jcoverage/Servletな...
**関連リンク [#r33cad0f]
#ls2
-[[djUnit:http://eclipsewiki.net/eclipse/?djUnit]]
----
この記事は
#vote(おもしろかった[21],そうでもない[2])
- Thank you for your job!! -- [[Helen]] &new{2007-09-20 (...
- 気づいたら変な行(コメント行等)に未実行のマーカーがつ...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: