2015-11-09 3 views
6

Что касается следующей информации:Cobertura: как покрыть пружинные-данные @Repository интерфейсы

https://stackoverflow.com/a/14601831/704246

Cobertura не делает инструмент интерфейсы

Я хотел бы знать, как добавить весна -data интерфейсы к результатам покрытия, так как @Repository классы реализации объявляются и создаются только Spring во время выполнения.

Рассмотрим следующий интерфейс:

// src/main/java/my/package/MyObjectRepository.java 

@Repository 
public interface MyObjectRepository { 
    MyObject findMyObjectByCodeAndName(String code, String name); 
} 

и следующее испытание:

// src/test/java/my/package/MyObjectRepositoryTest.java 

// @RunWith(SpringJUnit4ClassRunner.class) + Spring configuration 
public class MyObjectRepositoryTest { 

    @Autowired 
    private MyObjectRepository myObjectRepository; 

    @Test 
    public void myTest() { 
     myObjectRepository.findMyObjectByCodeAndName("foo","bar"); 
    } 
} 

Я не против перехода на Jacoco, но я читал, что это не инструмент интерфейсы либо.

Как можно покрыть следующие случаи? Тот же вопрос/вопрос возникает в отношении Mybatis Mapper, которые объявлены как интерфейсы, но конкретное объявление Java-класса, реализующее их, не написано разработчиком, а структурой во время выполнения.

Я открыл ticket, но я все еще жду ответа.

ответ

0

Если я правильно понимаю, интерфейс не может быть покрыт. Интерфейсы предназначены только для определения контракта и не содержат команд «runtime». И инструменты покрытия кода измеряют только те линии, которые доступны из текущих тестов. Скажем так, можно охватить только объявление поля, конструктор или тело метода.

Исключением могут быть интерфейсы Java8, которые содержат некоторые методы по умолчанию.

 Смежные вопросы

  • Нет связанных вопросов^_^