Bảo hiểm Mã là gì?
Phạm vi mã là một giá trị nhất định cho chúng ta thấy tỷ lệ phần trăm mã nguồn được hoàn thành trong quá trình thử nghiệm. Được rồi, mọi thứ có vẻ rõ ràng ở đây. Tỷ lệ phần trăm Bảo hiểm Mã có thể dao động từ 0 đến 100 và câu hỏi có thể đặt ra: bạn có nên cố gắng đạt tỷ lệ phần trăm CC tối đa không? Câu trả lời của tôi là: có và không. Tại sao vậy? Giả sử bạn tạo một dự án sẽ được sử dụng bởi một số dự án khác, nó có đầy đủ chức năng và trong số tất cả những điều kinh dị đó có getters và setters, và có khá nhiều trong số đó. Khi đề cập đến chức năng, chẳng hạn, không phải tất cả các getter đều được đề cập, nhưng bạn biết chắc chắn rằng những cái không được đề cập sẽ không được gọi trong dự án của bạn, nhưng các getters không phải lúc nào cũng được viết “cho chính chúng”, vì vậy chúng cần thiết cho “ khách hàng". Phải làm gì? Che từng getter riêng biệt? Đây sẽ không phải là thử nghiệm hiệu quả. Nhưng nếu chúng ta không che chúng, chúng ta sẽ không đạt được tỷ lệ CC tối đa. Đây là nơi xuất hiện một con dao hai lưỡi.Tại sao chúng ta cần Bảo hiểm Mã?
Tôi nghĩ câu trả lời cho câu hỏi này sẽ rất đơn giản: Bất kỳ mã nào cũng cần được kiểm tra để khi tái cấu trúc hoặc thêm/thay đổi chức năng, các lỗi “vô hình” không phát sinh và chúng tôi có thể theo dõi chúng. Chúng tôi sẽ không chạy qua các khung có điểm dừng và trình gỡ lỗi để bắt lỗi nguy hiểm này. Cuộc sống quá ngắn ngủi. Ví dụ Vì vậy, điều thú vị nhất. Nhiệm vụ là thế này: Đưa vào dự án nguồn mở của chúng tôi , mà chúng tôi đã viết trong bài viết trước , một công nghệ sẽ thu thập thông tin về CC, xử lý nó ở đâu đó và có thể đưa thông tin này lên GitHub dưới dạng một huy hiệu chẳng hạn. Tất cả mã nguồn sẽ được đăng trên GitHub của tôi .-
Hãy bắt đầu bằng cách chọn một plugin để thu thập thông tin về phạm vi mã vào một đống. Cá nhân tôi đã chọn JaCoCo , nơi thu thập thông tin về phạm vi bảo hiểm của mã. Nhưng cũng có những lựa chọn thay thế .
Сайт JaCoCo предлагает нам скачать плагин, но качать мы нечего не будем, ведь мы используем Build System Maven. Заходим в Maven Repository и ищем JaCoCo Plugin. Берем последнюю версию, и вставляем в наш pom.xml зависимость.
Но через dependencies я делать не рекомендую, ведь есть более хороший, более функциональный альтернативный вариант, и даже не один.
-
Заходим CodeCov Setup выбираем язык Java и выбираем Using JaCoCo плагин, и ставим по инструкции.
-
По той же ссылке выбираем Using Maven. Этот вариант будет даже лучше. Cobertura будет извлекать информацию из CI тестов, но увы и тут есть подвох. Все что выше JDK 7 (А на данный момент уже 10 есть) не подойдет. Поэтому мы остановимся на 1 варианте.
В результате в нашем pom.xml должно было появиться что то вроде того:
<!-- JaCoCo plugin --> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.1</version> <executions> <execution> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> </executions> </plugin>
И в Maven Projects в списке плагинов появится JaCoCo Plugin:
-
-
Плагин стоит. Все вроде бы замечательно. Но если вы внимательно читали инструкцию по установке JaCoCo plugin, там было указание, добавить в .travis.yml строчку, отвечающую за отправку отчёта plugin на сайт Codecov.
Итак, исходя из Using JaCoCo, нам нужно вписать в наш файл:
after_success: - bash <(curl -s https://codecov.io/bash)
Вписали. Отлично.
-
Все вроде готово, и остались финальные штрихи. Во-первых давайте скомпorруем наш code, и запустим все тесты, причем сделаем это через Lifecycle Maven:
Так How у нас в плагине JaCoCo стоит фаза выполнения test, то должен был появится отчет после выполнения цикла тестов Maven в папке target:
-
Подходим к завершению. Мы видим что все работает прекрасно, осталось лишь убедится что это "все прекрасно" также будет работать на внешних источниках. Настала пора собрать все в кучу. Собираем проект и делаем push на GitHub, перед этим открыв Travis CI и Codecov для мониторинга происходящего.
После push мы видим что сборка успешная:
И результат JaCoCo plugin о покрытии codeа:
-
Помните нашу задачу? Да, да, мы забыл про бейджик. Я хотел вынести тему "Украшение" open-source project'ов в отдельную статью, но маленькую часть все же оставлю здесь.
Итак, пошаговая инструкция что бы не заблудится:
-
Переходим на сайт Codecov;
-
Выбираем проект, который вам нужно;
-
Выбираем Setting:
-
Выбираем Badge и видим ссылки на ваш бейджик в несколько различных формах представления:
Первые это стандартные бейджики, их можно вставить, например, в ваш README.md:
Их особенность в том что при кликании на них вас будет перенаправлять на page с отчетом о CC;
Вторые это графы, таблицы и тому подобные штуки:
-
- Мой тестовый проект, который вы можете скачать, посмотреть, оценить. Все по этой статье находится в branch: JaCoCo;
- Công cụ bao phủ mã Java ;
- Các lựa chọn thay thế JaCoCo ;
- Thư viện JaCoCo ;
- Phụ thuộc vào plugin JaCoCo Maven ;
- Hướng dẫn thiết lập Codecov ;
- Trên thực tế, chính nó đang thiết lập JaCoCo ;
- Thiết lập Cobertura ;
GO TO FULL VERSION