« EMMA(2) | Main | EMMA(4):リモート操作 »

2005.09.10

EMMA(3)

 EMMAに関する日本語の資料ってなかなか見つからないですね・・・。
 それはさておき、以下のようなデフォルトパッケージ以外のクラスを作成してみて、テストしてみました。

package test.coverage;
import java.util.Random;
public class TestClass {
private Random random;

public static void main(String[] args) {
TestClass test = new TestClass();
test.testStart();
}

private void testStart() {
System.out.println("Start");
random = new Random();
if (random.nextBoolean()) method1();
if (random.nextBoolean()) method2();
if (random.nextBoolean()) method3();
}

private void method1() {
System.out.println("Method1 called");
if (random.nextBoolean()) method1_1();
if (random.nextBoolean()) method1_2();
if (random.nextBoolean()) method1_3();
}
private void method1_1() {
System.out.println("Method1_1 called");
}
private void method1_2() {
System.out.println("Method1_2 called");
}
private void method1_3() {
System.out.println("Method1_3 called");
}

private void method2() {
System.out.println("Method2 called");
if (random.nextBoolean()) method2_1();
if (random.nextBoolean()) method2_2();
if (random.nextBoolean()) method2_3();
}
private void method2_1() {
System.out.println("Method2_1 called");
}
private void method2_2() {
System.out.println("Method2_2 called");
}
private void method2_3() {
System.out.println("Method2_3 called");
}

private void method3() {
System.out.println("Method3 called");
if (random.nextBoolean()) method3_1();
if (random.nextBoolean()) method3_2();
if (random.nextBoolean()) method3_3();
}
private void method3_1() {
System.out.println("Method3_1 called");
}
private void method3_2() {
System.out.println("Method3_2 called");
}
private void method3_3() {
System.out.println("Method3_3 called");
}
}

 このjavaファイルを、カレントフォルダを基準にsrc/test/coverageフォルダ内に格納。
 on the flyで処理する場合。
java.exe -cp emma.jar emmarun -r html -sp ./src -cp TestClass.jar test.coverage.TestClass
 offlineで処理する場合。
java.exe -cp emma.jar emma instr -m fullcopy -d dist -cp TestClass.jar
java.exe -cp ./dist/lib/TestClass.jar;emma.jar test.coverage.TestClass
java.exe -cp emma.jar emma report -r html -sp ./src -in coverage.em,coverage.ec
ってな感じで、以下のことがわかります(まぁ、Documentにも記載されていますが)。
  1. offlineでコードを処理する場合、overwriteではなくfullcopyを用いることで、jarファイルは上書きされなくなる。しかし、この場合-dオプションで処理後のjarファイルの出力先を指定する必要がある。上記の場合、カレントフォルダからの相対パスでdist/libフォルダ内にTestClass.jarが作成されます。
  2. ソースファイルを参照させる場合は、パッケージ構造に対応したフォルダ構造のルートを指定する(まぁ、当然といえば当然でしょうが)。
  3. ソースファイルに.jarファイルは指定できない(これができれば楽なのですが・・・Documentにも.javaファイルとしか書かれていないようです)。
 ハイライトの色の説明がDocumentに見つからないのですが、


その行は全て処理した
その行の一部を処理した(if文で条件がfalseとなったために処理がスキップされた場合など?)
その行は全く処理されていない

って感じでしょうか。分岐に関するカバレッジは行われていないような感じです(if文の条件が全てtrueとなったときに100%になっているようなので)。

|

« EMMA(2) | Main | EMMA(4):リモート操作 »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/5869954

Listed below are links to weblogs that reference EMMA(3):

« EMMA(2) | Main | EMMA(4):リモート操作 »