Модульный тест — отличный инструмент для проверки того, выполняется ли функция ожидаемым образом.,Это одно из эффективных средств обеспечения качества кода. Проект может найти потенциальные проблемы в коде с помощью модульного теста.,Достаточное количество вариантов использования модулей также является лучшим объяснением того, как используется код. Обычно качество отдельного теста проекта измеряется уровнем покрытия одним тестом.,В данной статье объединена практика в проекте,данныйmaven
Как интегрировать многомодульные проектыjacoco
иcodecov
Одиночный тестинструмент。
Структура проекта maven для этой статьи выглядит следующим образом.
│ .gitignore
│ LICENSE
│ pom.xml
│ README-CN.md
│ README.md
│
├─.github
│ └─workflows
│ codecov.yml
│
├─rpamis-pattern-chain
│ │ pom.xml
│ │
│ └─src
│ └─main
│ └─java
│ └─com
│ └─rpamis
│ └─pattern
│ └─chain
│ │ AbstractChainHandler.java
│ │ AbstractChainPipeline.java
│ │
│ ├─entity
│ │ ChainException.java
│ │ ChainResult.java
│ │ CompleteChainResult.java
│ │ UniqueList.java
│ │
│ ├─interfaces
│ │ ChainHandler.java
│ │ ChainPipeline.java
│ │ ChainStrategy.java
│ │
│ └─strategy
│ FastFailedStrategy.java
│ FastReturnStrategy.java
│ FullExecutionStrategy.java
│
└─rpamis-pattern-test
│ pom.xml
│
└─src
└─test
└─java
└─com
└─rpamis
└─pattern
└─chain
│ DemoChainPipelineTest.java
│ DemoUser.java
│
├─handler
│ AuthHandler.java
│ LoginHandler.java
│ ValidateHandler.java
│
└─pipeline
DemoChainPipeline.java
вrpamis-pattern-chain
даrpamis-pattern (opens new window)О модуле внедрения структуры цепочки ответственности,иrpamis-pattern-test
дапосвященныйтестмодуль。
При интеграции инструмента одностороннего покрытия мы часто надеемся, что тестовый модуль и тестовый модуль отделены друг от друга.,Потому что втест В модуле мы также можем ввести необходимыеpomруководитьтест。Большинство онлайн-уроков научат вас, как интегрировать его в один проект.jacoco
,Однако это руководство применимо только к проектам с одним модулем.,**Руководство по использованию одномодульных проектов в многомодульных проектах.,Итоговые результаты одностороннего покрытия либо генерируются в файле,Но содержимое файла не помогло правильно выполнить одиночный тест.,в результате охват 0,Или файл даже не создается. **На основе приведенного выше содержания ошибок.,В этой статье описываются шаги по интеграции единого тестового покрытия в многомодульные проекты.
этой статьиjacoco.version
=0.8.10
rpamis-pattern-test
введено вrpamis-pattern-chain
проект
первый вparent pom
Добавитьjacoco
изmaven
Пакетплагин
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<append>true</append>
</configuration>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
</executions>
</plugin>
Уведомлениездесьиз Пакет Цельprepare-agent
Изназадсуществоватьтестмодульсередина(этой статьиrpamis-pattern-test
)изpom
Добавлено в файлjacoco
изmaven
Пакетплагин,Цельreport-aggregate
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<executions>
<execution>
<id>jacoco-report-aggregate</id>
<phase>test</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
эта цельдаформаjacoco
Агрегированная отчетность
намекать
дваpom
Вседапредставлятьизтот же самыйплагин,Но пакет ведет себя по-другому,В настоящее время это невозможно упростить.parent
серединаиз Пакетплагин,Это приведет к тому, что совокупные отчеты не смогут быть созданы.
хочу В упаковке проектназадсгенерировано правильноиз Одиночный тестфайл покрытия,тыизtest
модуль По крайней мере, должен быть работоспособныйизTest
программа,Вы также должны выполнить следующие шагиВ родительском классе (здесьrpamis-pattern
) упаковать
maven clean install
намекать
Должно быть сделано в родительском классе Package,потому чтоtest
модульзависит от ожиданиятестмодуль,Нужно загрузитьтестмодульизclass
Если вы привыкли использоватьidea
руководить Пакет,Не забудьте отпустить,Чтобы гарантировать, что программа модульного тестирования выполняется в Пакете
Если ваша программа модульного тестирования работает правильно,и бытьjacoco
собирать,Вы увидите подобные сообщения во время процесса обработки пакета.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running com.rpamis.pattern.chain.DemoChainPipelineTest
auth failed
validate success
login success
auth failed
auth failed
validate success
auth success
validate success
login success
validate success
validate success
auth failed
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.509 sec - in com.rpamis.pattern.chain.DemoChainPipelineTest
Results :
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] --- jacoco-maven-plugin:0.8.10:report-aggregate (jacoco-report-aggregate) @ rpamis-pattern-test ---
[INFO] Loading execution data file D:\Project\rpamis-pattern\rpamis-pattern-test\target\jacoco.exec
[INFO] Analyzed bundle 'rpamis-pattern-chain' with 10 classes
Пакетназадсуществоватьtest
модуль Внизtarget
Оглавление Волябудет генерироватьследующее文件
重点сосредоточиться наsite
Он генерируется в каталоге?jacoco-aggregate
,ки Создан ли внешний слой?jacoco.exec
Нажмитеjacoco-aggregate/index.html
Просмотр отчета об односторонней странице покрытия
Уведомление
如果тыиз Откроется веб-отчетназад Показывает одностороннее покрытие0
,И класс этого теста не найден,那么请检查тыиз Пакетдействие иpom
Установите соответствие с этой статьей
codecov (opens new window)существоватьgithub
серединаиз Открытый исходный кодпроектсередина广泛使用,Поддержка единого тестового покрытия на N языках.,Поддержка локальной компиляции и загрузка результатов вcodecov
Хэ Конгgithub action
строить Автоматизированное тестирование,и автоматически загружаемcodecov
。Он не только обеспечивает покрытие кодаиз Визуальный анализ,ии предоставилgithub
излоготип
首先ты需要注册codecov
счет,Доступныйgithub
счет Авторизоваться
Войдите на склад, где вам необходимо провести автоматическое тестирование.
Добавить новыйworkflow
,выбиратьset up a workflow yourself
给тыизworkflow
дайте имя,и следуйworkflow
Грамматические сценарии,Эта статьядапротивJava
языкиз Одиночный тест,переписыватьсяизвесьyml
следующее
# Срабатывает, когда событие push происходит в главной ветке.
name: CodeCoverageTest
on:
push:
branches:
- master
env: # Установить переменные среды
TZ: Asia/Shanghai # Часовой пояс (установка часового пояса позволяет «времени последнего обновления» на странице использовать часовой пояс)
jobs:
CodeCov: # пользовательское имя
runs-on: ubuntu-latest # Запуск в среде виртуальной машины ubuntu-latest
steps:
- name: Check out master code
uses: actions/checkout@master
- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'
cache: maven
- name: Build with Maven
run: mvn clean compile test
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
files: ./rpamis-pattern-test/target/site/jacoco-aggregate/jacoco.xml
flags: unittests
name: codecov-jacoco-rpamis
verbose: true
codecov
из配置可ксуществовать Официальная сборочная линия (opens new запрос в окне),вfiles
表示тыизпроект Пакетназадjacoco.xml
Местосуществоватьиз Расположение,token
为тыизcodecov
переписыватьсяизскладtoken
,Можно найти по адресу
yml
серединаизtoken
Это не написано прямым текстом.существоватьв,ида Усыновленныйсуществоватьgithub
Добавить частные переменныеиз形式
ты可ксуществоватьскладизSettings->Secrets and variables->Actions->New repository secret
середина Добавить новыйчастная переменная,Воляtoken
вставитьв
有个переписыватьсяизworkflow
Изназад,тебе просто нужноpush
код дляgithub
,курокgithub action
руководить Автоматизированное обучение и загрузка отчета
После выполнения,就可ксуществоватьcodecov
Посмотреть на официальном сайте Одиночный тест覆盖率结果了
同时ты可ксуществоватьSettings
середина找到переписыватьсяизлоготип