본문 바로가기
Develop/etc

[Jenkins] JUnit과 연동

by 연로그 2021. 4. 6.
반응형

이 포스팅은 다음 가정 하에 작성한다.

  1. Jenkins와 프로젝트가 연동되어 있다. (빌드가 가능하다)
  2. 프로젝트에 JUnit을 이용한 테스트 코드가 존재한다.

 

1. JUnit Plugin 설치

먼저 Jenkins에 접속해 Plugin Manager에서 JUnit Plugin을 설치한다.

나는 설치 가능에서 검색하니 안나오길래 설치된 플러그인 목록에 있었다.

(젠킨스 설치 세팅에 따라 기본적으로 설치되어있는 듯 하다.)

플러그인을 새로 설치한 경우, Jenkins를 꼭 재시작 해주자.

 

프로젝트에 JUnit을 이용한 테스트 코드가 존재한다면 1번 과정만으로도 연동이 완료된다.

 

오류 #1 package org.junit does not exist

-> junit 관련 jar 파일을 찾지 못했다. build 파일에 classpath 지정을 해주자

<target name="compile" depends="init,sonar">
	<path id="경로 아이디">
	    <fileset dir="jar파일 있는 경로" includes="*.jar" />
	</path>
		
	<!--src 폴더의 클래스들 bin 폴더에 내려 받기 -->
	<javac srcdir="${src}" destdir="${bin}" includeantruntime="true" classpathref="경로 아이디">
	</javac>
</target>

 

2. build 파일 수정

JUnit 테스트 결과에 대한 리포트를 생성할 수 있도록 빌드 파일을 수정해야 한다.

Ant Project 기준으로 작성하였으며 Maven, Gradle 설정은 나중에 다시 공부하겠다.

<?xml version="1.0"?>
<project name="testProject" default="main" basedir="." xmlns:sonar="antlib:org.sonar.ant">
	...
	<target name="junit4" depends="compile">
    	    <delete dir="레포트 저장할 위치" />
	    <mkdir dir="레포트 저장할 위치" />
        
    	    <path id="경로 아이디">
		  <fileset dir="라이브러리 목록이 있는 경로" includes="*.jar" />
	    </path>
	    <junit printsummary="on" fork="false" haltonfailure="false">
	      	<classpath refid="경로 아이디"/>
	      	<formatter type="xml"/>
	      	<batchtest todir="레포트 저장할 위치">
	        	<fileset dir="테스트 파일 위치">
	          		<include name="테스트파일 ex:Test*.class"/>
	        	</fileset>
	      	</batchtest>
	    </junit>

	    <junitreport todir="레포트 저장할 위치">
	      	<fileset dir="빌드 위치">
	        	<include name="TEST-*.xml"/>
	      	</fileset>
	      	<report format="frames" todir="레포트 저장할 위치"/>
	    </junitreport>
	</target>
	...
</project>

<batchtest> 태그를 실행하면 <fileset>을 실행한 결과를 <batchtest> 위치에 xml 형식으로 저장한다.

<junitreport> 태그 결과에 대해서는 다음과 같은 결과가 나온다.

 

오류 #2 java.lang.ClassNotFoundException

- 클래스를 못 찾는 중. 경로를 체크해봐야 한다.

- 만약 올바른 경로임에도 찾지 못했다면 해당 테스트 파일에 다른 파일을 import한 것이 있지 않나 확인해야 한다.

  예를 들어, 나는 JUnitTest.java를 실행할 때 Calculator.java를 필요로 한다.

  이 경우 Caculator.java를 포함한 파일들을 jar 파일 형식으로 묶어 classpath에서 같이 참조하도록 설정한다.

java.lang.ClassNotFoundException: 클래스 이름
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)

 

3. publish report

프로젝트 구성 - 빌드 후 조치 - Publish JUnit test result report

Test report XMLs에는 build 파일에서 기록한 결과물인 TESTS-TestSuites.xml을 입력하면 된다.

(경로를 포함해 입력해야 한다.)

 

빌드를 돌려보면 노란색 불 또는 파란색 불이 들어오면서 Test Result를 볼 수 있게 된다.

 


참고

publish report: www.tutorialspoint.com/jenkins/jenkins_unit_testing.htm

반응형

'Develop > etc' 카테고리의 다른 글

[Jenkins] PipeLine Syntax  (0) 2021.04.19
[Gradle] gradle이란?  (0) 2021.04.16
[Jenkins] Sonarqube와 연동  (2) 2021.04.05
테스트 종류와 도구  (0) 2021.03.31
[Jenkins] Jenkins, SVN, Ant 빌드 및 배포  (4) 2021.03.02