2015-11-09 16 views
6

Về thông tin sau:Cobertura: làm thế nào để bù đắp lò xo dữ liệu giao diện @Repository

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

Cobertura không giao diện công cụ

Tôi muốn biết làm thế nào để thêm mùa xuân -data giao diện cho kết quả bảo hiểm, từ @Repository các lớp triển khai chỉ được khai báo và khởi tạo bởi Spring khi chạy.

xem xét sau giao diện:

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

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

và sau kiểm tra:

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

Tôi không quan tâm chuyển sang Jacoco, nhưng tôi đã đọc rằng nó không giao diện công cụ hoặc.

Các trường hợp sau đây có thể được bao trả như thế nào? Vấn đề/câu hỏi tương tự xảy ra liên quan đến Mybatis Mapper, được khai báo là giao diện nhưng không có khai báo lớp Java cụ thể nào được triển khai thực hiện chúng được viết bởi nhà phát triển mà bởi khung thời gian chạy.

Tôi đã mở ticket nhưng tôi vẫn đang chờ câu trả lời.

Trả lời

0

Nếu tôi hiểu chính xác, một giao diện không thể được bảo vệ. Giao diện chỉ để xác định hợp đồng và không chứa các lệnh "thời gian chạy". Và các công cụ bảo hiểm mã chỉ đo các dòng có thể truy cập từ các thử nghiệm đang chạy. Nói theo cách khác, chỉ có khai báo trường, hàm tạo hoặc phương thức của cơ thể mới có thể được bảo vệ.

Ngoại lệ có thể là giao diện Java8 chứa một số phương pháp mặc định.

Các vấn đề liên quan