Отчет об освещении IntelliJ противоречитJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Отчет об освещении IntelliJ противоречит

Сообщение Anonymous »

У меня была очень странная проблема с отчетом IntelliJ о покрытии кода, который я не смог найти упомянутым где -либо еще. Для нескольких классов в одном пакете, если я запускаю соответствующие тесты вручную, в отчете покрытия показано 100% охват для этих классов; Однако, если я запускаю тесты для всего пакета, охват для этих классов значительно ниже (но не 0%), даже если те же тесты показаны как запуска. (например, если я запускаю com.example.wtf.footest , я вижу 100% покрытие для com.example.wtf.foo , но если я запускаю тесты для com.example.wtf , Я вижу 47% покрытие для com.example.wtf.foo , хотя com.example.wtf.footest был правильно запущен.) MVN Clean , удаление конфигураций Run и даже вручную копирование тестового класса (например, копирование com.example.wtf.footest to com.example.wtf.footest2 ) что -нибудь, чтобы решить проблему. Казалось бы, случайные линии сообщили о очень высоком количестве ветвей (например, возврат это; сообщается как охватывающие 8/10 ветвей). Я заметил обе проблемы во время несколько сложного рефакторинга, что заставляет меня подозревать, что они связаны, но это может быть совпадением. ) и JUNIT5. Я не использую никаких особенно экзотических функций; Существует несколько применений Mockitextension , но никаких других расширений, и все @parametizedtest используют стандартные источники тестирования. Я действительно не в недоумении из -за того, что может отбросить отчет о покрытии. в основном имена) удалено: < /p>

Код: Выделить всё

@Service
class FooFactory extends MemberHandler implements Supplier {

// superclass implements InvocationHandler and autowires a few dependencies

private final Foo proxy = createProxy();

@Override
public Foo get() {
return proxy;
}

private Foo createProxy() {
return (Foo) newProxyInstance(getClass().getClassLoader(), new Class[]{Foo.class}, this);
}

}
Когда я запускаю foohandlertest , все помечено как покрытое, но когда я запускаю тесты для пакета, только CreateProxy помечен как покрытый.
Другой класс имеет настройку, подобную этой: < /p>

Код: Выделить всё

@Service
class BarService implements Function {

Bar apply(Foo... foos) {
return apply(List.of(foos));
}

@Override
public Bar apply(List foos) {
// ...
}

}
< /code>
Когда я запускаю пакет тесты, первый метод помечен как покрытый, а второй - это не имеет смысла; Опять же, запуск barservicetest 
в изоляции показывает правильное покрытие.


Подробнее здесь: https://stackoverflow.com/questions/794 ... consistent
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»