본문 바로가기

두두의 IT/Spring

Spring Boot Junit5

728x90

1. JUnit이란?

프로그래밍 언어마다 테스트를 위한 프레임워크가 존재합니다.

이러한 도구들을 보통 xUnit이라고 말합니다. 자바언어의 경우는 JUnit이라고 말합니다.

각 언어마다 사용되는 xUnit은 다음과 같습니다.

xUnit이름 해당 언어 관련 사이트
CUnit C http://cunit.sourceforge.net
CppUnit C++ https://sourceforge.net/projects/cppunit
PHPUnit PHP https://phpunit.de
PyUnit Python http://pyunit.sourceforge.net
JUnit Java http://junit.org

 

2. JUnit 사용하기

JUnit을 사용하려면 JUnit 라이브러리가 클래스패스(CLASSPATH)에 존재해야 합니다.

Spring Boot / IntelliJ 사용 시, root 프로젝트 > build.gradle에 아래 dependency 입력

 dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
    }

    test {
        useJUnitPlatform()
    }

 

3. JUnit을 이용해 자바 어플리케이션 테스트 하기 실습

1) root 프로젝트 > src > test 폴더 선택 (초록색 표시 뜰 텐데 그거 선택)

2) main의 원하는 class 작성 > class 밑에 커서 놓기 > Ctrl + Shift + T

 

4. Junit을 이용하는 테스트 클래스의 어노테이션

   
@BeforeClass 테스트 클래스가 실행되기 전에 딱 한번 실행됨
@AfterClass 테스트 클래스의 모든 테스트 메소드가 실행이 끝나고 딱 한번 실행됨
@BeforeEach 테스트 메소드가 실행된 에 실행됨. 테스트 메소드가 5개 있는 테스트 클래스를 실행하면 @After가 붙은 메소드는 5번 실행됨
@AfterEach 테스트 메소드가 실행된 에 실행됨. 테스트 메소드가 5개 있는 테스트 클래스를 실행하면 @After가 붙은 메소드는 5번 실행됨
@Test 테스트 메소드

 

5. JUnit의 중요 assert

메소드 설명
assertEquals(x,y) 객체 x(예상값)와 y(실제값)가 일치하면 테스트 성공
assertArrayEquals(a,b) 배열 a와 b가 일치하면 테스트 성공
assertFalse(x) x가 false이면 테스트 성공
assertTrue(x) x가 true이면 테스트 성공
assertTrue(message, condition) condition이 true이면 message를 표시하고 테스트 성공
assertNull(o) 객체 o가 null이면 테스트 성공
assertNotNull(o) 객체 o가 null이 아니면 테스트 성공
assertSame(ox,oy) ox와 oy가 같은 객체를 참고하고 있으면 테스트 성공
assertEquals()는 값이 같은지 확인하고 assertSame()메소드는 같은 레퍼런스인지를 확인한다.
assertNotSame(ox,oy) ox와 oy가 같은 객체를 참조하고 있지 않다면 테스트 실패

 

 

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {ApplicationConfig.class})
public class CalculatorServiceTest {
}

@RunWith

  • JUnit이 제공하는 어노테이션
    JUnit은 확장기능을 가지는데, 스프링에서는 JUnit을 확장하도록 SpringJUnit4ClassRunner.class를 제공합니다.
    해당 코드는 JUnit이 테스트 코드를 실행할 때 스프링 빈 컨테이너가 내부적으로 생성되도록 합니다.

@ContextConfiguration(classes = {ApplicationConfig.class})

  • 내부적으로 생성된 스프링 빈 컨테이너가 사용할 설정파일을 지정할 때 사용합니다.

 

 

참고
https://www.boostcourse.org/web326/lecture