« 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


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

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