![[GitHub Actions] Spring Maven 프로젝트 테스트 자동화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCfpQR%2FbtsFPa8MzPt%2F7BbKNpg0I1iOeVAQwskdBk%2Fimg.png)
Github Actions 에서 Maven프로젝트 테스트
로컬에서 Test코드를 돌려보면 다 정상적으로 돌아가거나 실패하는데, Github Actions에서 실행하면 테스트가 모두 실행되지 않고 그냥 통과가 되는 현상이 발생했다.
Framework : Spring
프로젝트 : Maven
Java : 17
Test : JUnit5
문제상황
Running hello.deployproject.beanfind.ApplicationContextBasicFindTest
# 단위테스트 0개
step:6:48)Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.001 sec
# 통합테스트 0개
step:6:50)Results :
step:6:52)Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
step:6:54)[INFO] ------------------------------------------------------------------------
step:6:55)[INFO] BUILD SUCCESS
step:6:56)[INFO] ------------------------------------------------------------------------
step:6:57)[INFO] Total time: 1.979 s
step:6:58)[INFO] Finished at: 2024-03-14T18:18:26Z
step:6:59)[INFO] ------------------------------------------------------------------------
Github Action yml
name: Java CI with Maven
on:
push:
branches: [ main ]
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: 17
distribution: 'temurin'
- name: Cache dependencies
uses: actions/cache@v4
with:
path: ~/.m2
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-m2- ${{ runner.os }}-maven-
- name: Build
run: mvn --batch-mode -DskipTests package
- name: Maven프로젝트 테스트코드 실행
run: mvn --batch-mode --update-snapshots verify
name : Maven프로젝트 테스트코드 실행
분명 테스트코드를 실행하는 명령어를 넣었는데도 테스트코드가 무시되는 현상이 발생했다.
해결방법
결론적으로 따로 추가해야하는 plugin이 있었다.
분명 Dependency에 테스트하는 Junit5이나 라이브러리가 존재해서 Actions에서도 정상적으로 실행될것이라고 생각했는데, 사실은 달랐다.
여기서 의존성과 플러그인의 간단한 차이에 대해서 알아보면
의존성은 주로 프로젝트가 정삭적으로 컴파일되고 실행되기 위해 필요한 외부 라이브러리이다.
플러그인은 빌드 과정 중 특정 작업을 수행하는 소프트웨어 도구라고한다.
이러한 기본 개념만 알았다면 GitActions에서 테스트는 빌드후 테스트를 돌려보는것이기때문에 plugin이 존재해야한다는것을 빨리 알았을것이다.
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
</plugin>
<!-- 단위테스트(유닛테스트)-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version>
</plugin>
<!-- 통합테스트-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.2.5</version>
</plugin>
</plugins>
</build>
- 단위테스트와 통합테스트하는 플러그인을 추가해서 같은 코드를 실행하면 정상적으로 테스트가 진행된다.
결과
# 위쪽은 단위테스트 진행
.
.
.
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 s -- in hello.deployproject.singleton.StatefulServiceTest
# 여기까지 단위 테스트
step:5:124)[INFO]
step:5:125)[INFO] Results:
step:5:126)[INFO]
step:5:127)[INFO] Tests run: 25, Failures: 0, Errors: 0, Skipped: 0
# 통합테스트
참고한 링크들
GitHub Actions: Workflow Example with Maven - DevOpsSchool.com
Mentor for DevOps - DevSecOps - SRE - Cloud - Container & Micorservices at Software AG Join my following certification courses... - DevOps Certified Professionals (DCP) - Site Reliability Engineering Certified Professionals (SRECP) - Master in DevOps Engin
www.devopsschool.com
no "Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, " even that cucumber test was executed using "mvn test" command
Could someone suggest me a solution why when I run the test using command mvn test to run the cucumber runner class ExampleRunnerTest located in \src\test\java it runs but the maven build doesn't
stackoverflow.com
Getting started with Github Actions: Run JUnit 5 tests in a Java project with Maven
This blog post was originally published at blog.codeleak.pl Github Actions is a CI/CD service prov...
dev.to
Maven 단위테스트 Plugin
https://maven.apache.org/surefire/maven-surefire-plugin/index.html
Maven 통합테스트Plugin
https://maven.apache.org/surefire/maven-failsafe-plugin/index.html
공부하면서 찾아본것들이나 학습한 내용 업로드합니다🤓
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!