DevOps

[CI/CD] Gitlab-ci.yml 작성 예제 - JUnit

네른 2022. 4. 28. 22:03

본 글에서는 JUnit, Jacoco, Jmeter, SiteSpeed.io를 gitlab-ci.yml에 작성하는 틀을 적어두고자함.

 


JUnit

 

JUnit은 우선 Gradle 환경을 기반으로 설명하고자 함.

JUnit은 자바의 유닛 테스트 도구로, gradle에서 해당 플러그인을 지원하고 있음

 - build.gradle 파일에 다음과 같은 내용 추가

   버전이 달라 작성하는 내용에 약간의 차이가 있을 수 있음

implementation ("junit:junit:{junit버전}")
testImplementation ("junit:junit:{junit버전}")

 

이후, Java Testcase를 직접 작성하고

 package test;
 import static org.junit.Assert.*;
 import org.junit.Test;
 
 public class JunitTest {
 
 Calculator cal = new Calculator();
 BooleanTest boo = new BooleanTest();
 
 String arraytest[] = {"APPLE", "PEACH"};
 String arraytest2[] = {"APPLE", "PEACH"};
 
 @Test
 public void testMultiple() { 
     assertEquals(56, cal.multiple(7, 8)); //assertEquals(a,b) : 두개의 매개변수(a,b)가 같은지 확인
     assertNull(null); // assertNull() : 매개변수가 null인지 확인
     assertNotNull(cal.multiple(7, 8)); //assertNotNull() : 매개변수가 null이 아닌지 확인
     assertTrue(boo.isInteger("10")); //assertTrue() : 매개변수가 true 인지 확인
     assertArrayEquals(arraytest,arraytest2);//assertArrayEquals() : 두 배열이 같은지 확인
 }
 
 @Test
 public void testMinus() {
     assertEquals(1, cal.minus(7, 8)); //assertEquals(a,b) : 두개의 매개변수(a,b)가 같은지 확인
 }

위의 테스트 코드를 기존 코드와 함께 commit하면 된다.

이 때, gitlab-ci.yml 파일은 다음과 같이 작성한다.

 

gitlab-ci.yml이란?

 - Gitlab은 commit시에 포함되어있는 gitlab-ci.yml 파일에 정의된 내용에 따라 job을 실행하게 됨

 - 이 job들은 모여서 하나의 pipeline을 구성하게 되며 이 pipeline을 모두 정상적으로 통과한 commit만이 반영됨

 

 image: gradle:latest
 // 해당 commit이 수행할 모든 job들
 stages: 
   - unit_test
 // 그 중 unit_test 라는 이름의 job에 대한 정의
 unit_test: 
   stage: test
   script:
      // gradle을 이용한 테스트 진행
     - gradle check 
   artifacts:
       // 앞선 작업의 여부와 관계없이 반드시 진행 - 여기서는 테스트가 성공하던 안하던 레포트를 생성하기 위함
     when: always
     // 생성된 테스트 리포트를 Gitlab에서 확인할 수 있도록 아티팩트로 추출
     reports:
       junit: build/test-results/test/**/TEST-*.xml 
   tags:
    - ci

gitlab-ci.yml에 위와 같이 작성하면 됨. 매우 간단하다.

물론 프리미엄 버전의 gitlab에서는 이런걸 플러그인으로 제공하고있으니 그걸 써도 된다.

여기서는 그런거 없이 직접 사용하는 방법을 설명하는 것.

 

추가) 추출하는 xml은 JUnit이 기본적으로 생성하는 test의 결과파일

테스트 성공

테스트가 성공하면 위의 사진과 같이 성공했다는 내역을 볼 수 있으며 view details를 눌러 레포트를 열어볼 수 있다.

 

테스트 실패

테스트를 실패하면 view details에 이렇게 실패한 내역이 나온다.

이는 JUnit의 로그이다!