Есть ли автоматизированный способ убедиться, что все части кода проходят модульное тестирование? - PullRequest
7 голосов
/ 30 марта 2010

Я написал тесты JUnit для своего класса и хотел бы, чтобы он сообщал мне, есть ли какая-либо часть моего кода, которая не тестируется модулем. Есть ли способ сделать это?

Ответы [ 5 ]

11 голосов
/ 30 марта 2010

Да, инструменты покрытия, такие как cobertura или emma .

Они создают отчетов , которые показывают каждую строку в исходном коде и были ли они выполнены или нет (а также агрегированную статистику).

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

4 голосов
/ 30 марта 2010

Вам нужны некоторые инструменты покрытия кода. См. здесь (http://java -source.net / open-source / покрытие кода) для некоторых

Если вы посмотрите на первый, я думаю, что он делает то, что вам нужно

Cobertura - это бесплатный инструмент Java, который вычисляет процент кода, к которому обращаются тесты. Его можно использовать для определения того, в каких частях вашей Java-программы отсутствует тестовое покрытие. Он основан на jcoverage. Особенности Cobertura:

  • Может быть выполнен из муравья или из командная строка.
1 голос
/ 30 марта 2010

Если вы используете Eclipse, вы также можете попробовать EclEmma , которая показывает вам, какие строки источника были охвачены вашим тестом. Это иногда более полезно, чем запуск инструмента покрытия, такого как Cobertura, потому что вы можете запустить один тест изнутри Eclipse, а затем сразу же получить отзыв о том, что было освещено.

0 голосов
/ 19 сентября 2012

Если вы используете IntelliJ, то есть кнопка с названием

«Пробег с покрытием»

Run with Coverage

0 голосов
/ 19 сентября 2012

Ваш заголовок и ваш фактический вопрос отличаются. Инструменты, упомянутые в других ответах, могут сказать вам, какая часть кода была не протестирована (= не выполнена вообще). Создание «убедитесь, что все части кода тестируются модулем» - это другое дело. Инструменты покрытия могут сказать вам, были ли выполнены все строки / инструкции, но они не гарантируют, что все проверено функционально (все совокупности данных, все пути выполнения и т. Д.). Это требует некоторых умственных способностей. На мой взгляд, тестовое покрытие часто дает неправильное чувство безопасности. Например. тестирование тривиальных геттеров значительно увеличивает охват, но довольно бесполезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...