Пропущенные ветки в тестировании JUnit и EclEmma - PullRequest
1 голос
/ 15 марта 2012

Я использую EclEmma для проверки охвата тестового класса, который я написал (тестирование JUnit). Я включил утверждения в Java, используя -ea. После запуска теста покрытия, где я использовал утверждения Java (в реальном коде, конечно, не в тестовом коде), он говорит, что x ветви y пропущены. Как я могу покрыть все ветви? Я что-то не так делаю?

1 Ответ

2 голосов
/ 15 марта 2012

Я думаю, что вы спрашиваете, почему вы получаете более низкий охват, когда вы отключаете свои утверждения? Это происходит потому, что компилятор вставляет новые ветви для утверждений. Рассмотрим этот пример:

assert x > 0;

Компилятор вставит код, который примерно соответствует

if (assertions are enabled) {
    if ( ! x > 0 )
        throw new AssertionViolatedException()
    }
}

Это добавляет ветки к вашему коду, и ни одна из них не выполняется, когда вы включаете утверждения. Это снизит коэффициент покрытия, но это не имеет большого значения, поскольку это относится к сгенерированному компилятором коду.

...