パスワードを忘れた? アカウント作成
52558 journal

quabbinの日記: EclipseとカバレッジでEclEmma 2

日記 by quabbin

本格的にTDDを開始すると、すぐにテストのカバレッジが気になるのは、私が細かいせいでしょうか。
そこでEclipse上でカバレッジを確認できるもと考えてdjUnitや本家TPTPなどを検討してみたのですが、どうも分かりにくい。
他にないかと検索したところ、EclEmmaでソースのカバレッジを確認してみるというエントリーを発見。
早速試してみました。

結果はそのblogにある通り、行単位にカバー具合を表示してくれました。
テストで実行された場所は緑色に、実行されていない部分は赤色になり、条件分岐やfinallyなどの複数条件で実行されなければならない場所で十分に条件が満たされていないところは黄色となり、なかなか好調。
ただ、これってtestコードまで色が付いてしまうのですよね。って、実際に正しくテストコードが動いているかどうかというのも重要な視点だから、それで正しいのか。

ついでに、例外が発生するかどうかのテストにおいては、少し挙動がおかしい模様。

import junit.framework.TestCase;
public class SampleTest extends TestCase {
    private void doException(boolean exeption) {
        if (exeption) {
            throw new RuntimeException();
        }
    }
 
    public void testMethod() {
        boolean b = true; // => ここが赤くなる
        try {
            doException(b); // => ここが赤くなる
            fail("fail!!");
        } catch (RuntimeException e) {
            assertTrue(true);
        }
    }
}

…こんなところに書くより、BTSに報告したほうがよさそうですね。

23:13追記
ということで、報告してみました
さて、この壊れた英語が通用するだろうか。

09/01/28追記
2008/04/03に返答が着ました。
その質問はFAQであり仕組み上難しいとのこと。
対応は難しいようです。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by hling_nc (37505) on 2009年01月08日 10時21分 (#1487582)
    新年おめでとう。 前日私もこの問題にぶつかりました。 インタネットで検索しでも解答を見つけませんなので、 sourceforgeではこの問題を問合せします。 答えは: This is a known limitation of the EMMA library, see: http://www.eclemma.org/faq.html#trouble02 [eclemma.org] Code with exceptions shows no coverage. Why? The underlying EMMA library works on so called basic blocks. A basic block is a sequence of instructions without any jumps or jump targets. A basic block is marked as executed when it reaches its last instruction. In case of exceptions a basic block is aborted somewhere in the middle and not marked as executed.
typodupeerror

犯人はmoriwaka -- Anonymous Coward

読み込み中...