Эмма не записывает трансляцию линии, хотя она выполняется

Я использую emma для записи покрытия кода. Меня особенно интересует линейное покрытие (или процент строк). Мы планируем увеличить линейное покрытие для нашего исходного кода за счет автоматизации. Мы сначала выполняем сценарии вручную, а затем проверяем с помощью emma, есть ли увеличение %. Если есть, мы идем дальше и автоматизируем эту функцию. Я застрял в определенном блоке IF-ELSE, где я вижу желаемый результат, когда запускаю сценарий вручную. Но эмма не записывает реплику как крытую. Вот пример кода ниже

    if (a == null) 
             {
                 final class1 c1 = new class1();
                 if (c1.isSE()) 
                 {
                    c1.sendRedirect(req, res, "error.html");
                 } 
                 else 
                 {
                     c1.sendRedirect(req, res, "testpage.html");
                 }
                 return;
             }

Первые 3 строки в отчете emma выделены зеленым цветом. Но следующие строки ниже в отчете emma выделены красным (это означает, что они не покрыты)

c1.sendRedirect(req, res, "error.html");
c1.sendRedirect(req, res, "testpage.html");
return;

Но когда я выполняю сценарий вручную, я вижу желаемый результат (т. е. меня перенаправляют на страницу testpage.html). Почему emma не записывает эту строку как скрытую?

Примечание. Я пробовал следующее устранение неполадок, описанное ниже (упомянутое в http://emma.sourceforge.net/faq.html. )

3.18. EMMA начала сообщать, что она инструментировала 0 классов, несмотря на то, что я дал ей некоторую информацию...

Вас может сбить с толку инкрементальный характер инструментов EMMA. При отладке сборки с поддержкой EMMA попробуйте выполнить чистую перекомпиляцию и/или удалить вручную все каталоги вывода инструментов и все файлы .em/.ec, чтобы сбросить EMMA до чистого состояния.


person user2156927    schedule 11.03.2013    source источник
comment
Как вы формируете отчет? Какой инструмент для сборки вы используете?   -  person ram    schedule 08.08.2013


Ответы (1)


Может быть полезно для будущих людей, которые ссылаются на это...

Когда вы используете Jars.you, вы можете увидеть, что emma перечисляет некоторые классы с «Класс, скомпилированный без режима отладки». Если вы видите эти сообщения при инструментировании, то % покрытия линии не будет создано. Чтобы преодолеть это, вам нужно либо скомпилировать эти классы в режиме отладки, либо рассмотреть возможность исключения, если эти классы не требуются. Обычно классы с вышеупомянутым сообщением являются сторонними классами.

Если вы не видите сообщение «Класс скомпилирован без режима отладки» во время инструментирования, то вы должны увидеть линейное покрытие в своем отчете.

person Harish Gautham    schedule 23.01.2014