본문 바로가기
DEV/JAVA

JUnit 테스트 해보기

by 땅콩둘기 2021. 4. 14.
반응형

JUnit이란?

JUnit은 자바용 단위 테스트 작성을 위한 도구라고 볼수 있습니다.
테스트를 할때 자바의 main 메서드를 통해서 실행해서 테스트를 했었습니다. 이런방법은 준비하고 실행하는데 오래걸리고 반복적으로 실행하는데 어렵고 여러 테스트를 동시에 실행하기 어렵다는 단점이 있습니다.

그래서 Junit테스트를 사용해 단위 테스트를 하는것이 권장됩니다.😉

 

✔ 테스트 환경

 

Spring-boot 2.4.4 부터는 Junit5 라이브러리가 포함되어 있어 별도의 설정이 필요없습니다.

plugins {
	id 'org.springframework.boot' version '2.4.4'
	id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	id 'java'
}

 

회사에서는 이클립스를 사용하기 때문에 이클립스 환경에서 실행해 보겠습니다.

 

src/test/java 아래에 만들어진 패키지에 Junit Test Case로 java파일을 만들어줍니다. 

Spring 실행시 test 아래는 실행하지 않기 때문에 별로로 있는 꼭 별도로 있는 src./test아래에 테스트 코드들을 작성해야합니다.

 

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class JunitTest {

	@Test
	void test() {
		fail("Not yet implemented");
	}

}

처음 만들어진 Junit의 templet코드 입니다. 

💥 @Test : 단위테스트 메소드임을 알려줘 선언한 메소드를 JUnit이 알아서 실행을 해줍니다.

 

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import dulgi.hellospring.member.Member;
import dulgi.hellospring.member.MemberServiceImpl;
import dulgi.hellospring.member.MemoryMemberRepository;

class MemberServiceTest {

	MemberServiceImpl memberService;
	MemoryMemberRepository memberRepository;
	
	//Test 메소드 실행 전
	@BeforeEach
	public void beforeEach() {
		memberRepository = new MemoryMemberRepository();
		memberService = new MemberServiceImpl(memberRepository);
	}
	//Test 메소드 실행 후
	@AfterEach
	public void afterEach() {
		memberRepository.clearStore();
	}
	//회원가입
	@Test
	public void join() {
		//given
		Member member = new Member();
		member.setName("hello");
		
		//when
		Long saveId = memberService.join(member);
		
		//then
		Member findMember = memberRepository.findById(saveId).get();
		assertEquals(member.getName(), findMember.getName());
	}
}

 

실제로 간단한 Test 코드를 작성해봤습니다!

 

💥 @BeforeEach() :  Test 메소드가 실행전 호출되는 메소드로 공통적인 Param 및 설정을 하거나 초기화 할때 사용

💥 @AfterEach() : Test 메소드가 실행후 호출되는 메소드로 종료되어야할 리소스를 처리하는 부분으로 사용

 

Run 할 떄 JUnit Test로 실행하기

 

JUnit 테스트를 실행할 경우 위와 같이 초록색이 보이면 테스트 성공입니다.

오류를 확인하기 위해 위에 코드에서 findById의 인자를 변경해봤습니다.

//회원가입
	@Test
	public void join() {
		//given
		Member member = new Member();
		member.setName("hello");
		
		//when
		Long saveId = memberService.join(member);
		
		//then
		Member findMember = memberRepository.findById(2L).get();
		assertEquals(member.getName(), findMember.getName());
	}

아래와 같이 빨간색과 함께 오류가 난 원인을 가르쳐줍니다.

🎈🎈 테스트의 중요성이 커지는 만큼 JUnit을 더 잘 활용하면 좋을것 같습니다😆

반응형

'DEV > JAVA' 카테고리의 다른 글

스프링부트 사용하기  (0) 2021.06.03
스프링부트 CLI 시작하기  (0) 2021.05.19
JAVA로 하샤드 수 구현하기  (0) 2021.05.01
JAVA로 369게임 만들기  (0) 2021.04.30
JAVA 8의 Optional 사용해보기  (0) 2021.04.14

댓글