2013-06-26 3 views
-1

Я хотел бы создать отчет из своих модульных тестов без их запуска. Я хотел бы только проанализировать исходный код теста и проверить, какие методы были вызваны. В моих тестах я использую JUnit, Arquillian. Я запускаю их на внешний сервер, и у меня возникли проблемы с использованием расширения arquillian-jacoco. После того, как приложение инструментария не может начать правильно. Есть ли какой-либо инструмент, обеспечивающий такую ​​функциональность?Отчет о покрытии кода без выполнения теста

+1

Инструмент недоступен для получения покрытия кода без запуска тестовых примеров. Это по логической причине, так как охват означает, сколько кодов покрывается вашими тестовыми примерами. Без запуска тестовых случаев любые претензии будут ошибочными. –

+1

Насколько я знаю, нет инструментов, которые могут дать вам покрытие кода, не пропуская его. – JREN

+0

Похоже, что ваша настоящая проблема - почему ваш код не работает. Возможно, вам стоит переписать свой вопрос так, чтобы * этот * был фокусом - ведь правильное покрытие кода - это то, что вы хотите! –

ответ

1

Охват кода - это не только о том, какие методы называются. Он идет еще на один уровень и проверяет, какие линии внутри метода были покрыты (фактически выполнены) во время тестовых случаев.

Таким образом, речь идет не просто о вызове метода как части вашего кода и о том, действительно ли какой-либо из потоков выполнения вызывает этот метод или нет. И, потоки выполнения будут в основном зависеть от входных данных тестового примера. Таким образом, если вы не запускаете их, инструмент для охвата кода в этом случае почти не существует.

Предполагая, у вас есть некоторый код, как

if (size > 0) { 
    this.array = new Integer[size]; 
} else { 
    String msg = "Input size must be > 0"; 
    logAndThrow(msg, new IllegalArgumentException(msg)); 
} 

Теперь, что вы эффективно сказать, лечить logAndThrow(), как покрытые, которые, конечно, не тот случай, если у вас нет какой-то тест, который проверяет этот класс size <= 0 ,

1

Хотя уже есть отличные ответы, я хотел бы добавить, что во время компиляции многие вещи не могут быть просто определены и, следовательно, могут быть идентифицированы только во время выполнения. Полиморфизм - отличный пример для этого.

0

Один может получить покрытие кода без выполнения кода посредством статического анализа, по существу, с помощью slicing your code от каждого модульного теста. См. Техническую документацию Static Estimation of Test Coverage.

Сказав это, я не думаю, что в настоящее время есть какие-либо производственные инструменты, которые реализуют эту идею.