2015-11-09 7 views
6

In Bezug auf folgende Informationen:Cobertura: Wie decken feder Daten @Repository Schnittstellen

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

Cobertura nicht Instrument Schnittstellen

Ich mag würde wissen, wie Frühling hinzufügen -Data-Schnittstellen zu Coverage-Ergebnissen, da @Repository Implementierungsklassen nur von Spring zur Laufzeit deklariert und instanziiert werden.

Betrachten Schnittstelle folgende:

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

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

und folgenden Test:

// 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"); 
    } 
} 

Ich habe nichts zu Jacoco Schalt, aber ich habe gelesen, dass dies nicht der Fall Geräteschnittstellen entweder.

Wie können folgende Fälle abgedeckt werden? Dasselbe Problem/dieselbe Frage tritt bei Mybatis Mapper auf, die als Schnittstellen deklariert sind, aber keine konkrete Java-Klassendeklaration, die sie implementiert, wird vom Entwickler geschrieben, sondern vom Framework zur Laufzeit.

Ich habe eine ticket geöffnet, aber ich warte immer noch auf eine Antwort.

Antwort

0

Wenn ich richtig verstehe, kann eine Schnittstelle nicht abgedeckt werden. Schnittstellen dienen lediglich zur Definition des Vertrags und enthalten keine "Laufzeit" -Befehle. Und Codeüberdeckungswerkzeuge messen nur die Linien, die von den laufenden Tests erreichbar sind. Sagen Sie es anders, nur Felddeklaration, Konstruktor oder Methodenkörper können abgedeckt werden.

Eine Ausnahme können Java8-Schnittstellen sein, die einige Standardmethoden enthalten.