티스토리 뷰

실제 서비스를 배포하고, 운영하면 문제가 생기기 마련이다. 이 문제를 사전에 막기 위해서는 테스트 코드가 큰 영향을 주는데 테스트 코드는 작성하기도 귀찮고 안일해지게 되는것 같다. 테스트 코드를 관리하지 않으면 어느새 코드 커버리지는 낮아지게 되고 코드 커버리지가 낮다는 것은 코드가 충분히 검증되지 못했다는 것을 의미한다.

이 문제를 어떻게 하면 개선할 수 있을까.. 코드 커버리지가 일정 수준보다 낮으면 배포가 되지 않도록 하면 되지 않을까??

이 의문까지 도달했을때 이미 관련된 도구가 있다는 것을 알게 되었다. 그리고 이번 글의 주제인 JaCoCo가 그 주인공이다.

JaCoCo는 Code Coverage를 측정하는 라이브러리이다. 테스트를 실행하고 그 결과를 html 파일이나 xml, csv를 통해 시각화해준다. 그리고 이 Coverage 결과에 따라 기준치를 정해 일정 수준보다 낮으면 코드의 품질이 낮다고 판단해 빌드되지 않도록 막을 수도 있다. 미래의 나에게 코드 관리를 제대로 할 수 있도록 족쇄를 걸 수 있다는 것이다. maven을 기준으로 JaCoCo를 적용해보기로 하자.

<plugin>
	<groupId>org.jacoco</groupId>
	<artifactId>jacoco-maven-plugin</artifactId>
	<version>0.8.4</version>
	<executions>
		<execution>
			<goals>
				<goal>prepare-agent</goal>
			</goals>
		</execution>
		<execution>
			<id>report</id>
			<phase>prepare-package</phase>
			<goals>
				<goal>report</goal>
			</goals>
		</execution>
	</executions>
</plugin>

pom.xml 파일에 jacoco plugin을 추가하고, 터미널에서 mvn clean verify를 입력하자.

빌드에 성공했다면 /target/site/jacoco/index.html 파일이 생성되었을 것이다.

이 파일을 열어보면, 내가 작성한 모든 코드의 코드 커버리지 정보를 얻을 수 있다.

결과를 살펴보면, 몇개의 Instructions가 누락되었는지, 몇개의 분기 조건이 누락되었는지 확인할 수 있다.

상세하게 눌러보면 정확히 어떤 라인이 고려되지 않았는지 확인해볼 수 있다. 이제 이 정보를 활용해 커버리지가 어느정도인지, 원하는 수치에 도달하지 못했다면 빌드를 막아버릴 수 있다.

<execution>
	<id>jacoco-check</id>
	<goals>
		<goal>check</goal>
	</goals>
	<configuration>
		<rules>
			<rule>
				<element>PACKAGE</element>
				<limits>
					<limit>
						<counter>LINE</counter>
						<value>COVEREDRATIO</value>
						<minimum>0.50</minimum>
					</limit>
				</limits>
			</rule>
		</rules>
	</configuration>
</execution>

jacoco plugin에 위의 코드를 추가하면 된다. 현재 0.5를 기준으로 정했는데 만약 이 수치에 도달하지 못한다면 빌드를 막아버리게 된다. 이 값을 90%로 설정하고, 다시한번 빌드를 해보면 아래와 같은 결과를 얻을 수 있다.

이제 원하는대로 기준을 만족하지 못했다면 빌드가 되질 않는다. 이제 열심히 테스트 코드를 작성하기만 하면 된다..

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함