В нашей реальной работе после завершения разработки программы ее необходимо передать тестировщикам на тестирование. Только после тестирования тестировщиками код можно выкладывать в рабочую среду.
Возникает вопрос: как можно доказать, что программа прошла достаточное количество тестов?,программа Весь код в。Конечно, покрытие кода можно использовать только в качестве эталона после тестирования. Если исходные требования неправильно поняты, то каким бы высоким ни было покрытие кода, оно потеряет свой смысл.
Затем вам нужно ввести покрытие кода. Чтобы измерить покрытие кода C++, вы можете использовать GCover, а для измерения покрытия кода Java — JaCoCo.
JaCoCo — это бесплатный инструмент обнаружения покрытия кода Java, который может подсчитывать тестовое покрытие следующего контента:
Конкретное значение различных тарифов покрытия можно найти в официальной документации.:https://www.jacoco.org/jacoco/trunk/doc/counters.html
При использовании JaCoCo для генерации покрытия можно использовать метод «на лету», не нарушающий исходный код программы. Вам нужно только добавить параметр при запуске jar-пакета, что гарантирует проверку кода. тестером соответствует онлайн-версии. Код в производственной среде соответствует.
Для простоты тестируемый класс создается непосредственно на основе Springboot и использует аннотацию RequestMapping.
package com.test.JacocoTest.controler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping
public class Athytics {
@GetMapping("/+/{a}/{b}")
public int add(@PathVariable("a") Integer param1, @PathVariable("b") Integer b){
int result = 0;
if(param1 < 0 || param1 > 1000){
result = b - param1;
}else{
result = param1 + b - 1000;
}
return result;
}
@GetMapping("/-/{a}/{b}")
public int minus(@PathVariable("a") Integer param1, @PathVariable("b") Integer b){
return param1 - b;
}
@GetMapping("/*/{a}/{b}")
public int multiply(@PathVariable("a") Integer param1, @PathVariable("b") Integer b){
return param1 * b;
}
@GetMapping("///{a}/{b}")
public int divide(@PathVariable("a") Integer param1, @PathVariable("b") Integer b){
return param1 / b;
}
@GetMapping("/c/{a}/{b}")
public String power(@PathVariable("a") Integer param1, @PathVariable("b") Integer b){
return String.valueOf(Math.round(Math.pow(param1, b)-1));
}
@GetMapping("/abs/{a}")
public String abs(@PathVariable("a") Integer param1){
return String.valueOf(Math.round(Math.abs(param1)));
}
}
Создайте класс запуска SpringBoot:
package com.test.JacocoTest;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class JacocoTestApplication {
public static void main(String[] args) {
SpringApplication.run(JacocoTestApplication.class, args);
}
}
Структура кода очень проста
Вы можете перейти на официальную страницу для скачивания https://search.maven.org/search?q=g:org.jacoco
Просто загрузите два пакета, которые вам нужны.
Набор инструментов Jacoco и протестированные пакеты следующие:
Укажите имя пакета, который необходимо проверить на покрытие тестового кода, и соберите IP-адрес и порт файла покрытия Jacoco.
java -javaagent:jacocoagent.jar=includes=com.test.*,output=tcpserver,port=6301,address=localhost,append=false -jar JacocoTest-1.0-SNAPSHOT.jar
Поскольку используется среда разработки Springboot, вы можете напрямую открыть браузер для тестирования.
Введите следующий URL-адрес: http://localhost:9999/+/12/25.
Укажите, где получить статистику jacoco. Адрес и порт должны соответствовать параметрам запуска в версии 2.2.
java -jar jacococli.jar dump --address localhost --port 6301 --destfile jacoco.exec --reset
Описание параметра:
--reset После генерации данных о покрытии сбросить предыдущую статистику. Если вы хотите повторно получить статистику, вам необходимо удалить ранее созданный исполняемый файл.
--address IP хоста, на котором запущен jacocoagent.jar
--port порт мониторинга хоста, на котором работает jacocoagent.jar
После выполнения в каталоге будет сгенерирован файл, указанный в инструкции. exec документ jacoco.exec
Чтобы создать отчет, вам необходимо указать как исходный документ, так и скомпилированный документ с байт-кодом.
Укажите документ класса и путь к исходному коду, а также сгенерируйте отчет в формате html.
java -jar jacococli.jar report jacoco.exec --classfiles D:\Spring\JacocoTest\target\classes --sourcefiles D:\Spring\JacocoTest\src\main\java --html log
Нажав на index.html в каталоге, вы откроете информацию о покрытии.
Введите тестовый класс, и вы увидите покрытие каждого метода.
Введите метод, и вы увидите покрытие кода.
Зелёный цвет полностью покрыт, красный — непокрыт, а желтый — частично покрыт.
Для получения новых данных о покрытии необходимо удалить exec документ,В противном случае это совокупное покрытие.。
Помощь по использованию jacococli.jar
Usage: java -jar jacococli.jar report [] [--encoding ] [--help] [--html ] [--name ] [--quiet] [--sourcefiles ] [--tabwith ] [--xml ] : list of JaCoCo *.exec files to read --classfiles : location of Java class files --csv : output file for the CSV report --encoding : source file encoding (by default platform encoding is used) --help : show help --html --name : name used for this report --quiet : suppress all output on stdout --sourcefiles : location of the source files --tabwith : tab stop width for the source pages (default 4) --xml : output file for the XML report