본문 바로가기
Spring/테스트코드

JUnit

by doriver 2022. 11. 24.
JUnit 5
The 5th major version of the programmer-friendly testing framework for Java and the JVM

 

JUnit

java의 unit테스트 프레임워크이다. ( 단위테스트 도구 , 플러그인 형태로 eclipse에 포함되어 있다 )

 

테스트 결과를 확인 , 테스트시 걸린 시간 , 최적화된 코드를 유추 
, 테스트 결과를 TEST클래스로 남김( 테스트 방법 및 클래스의 History를 넘겨줄수 있음)

 

@Test가 메소드 위에 선언되면, 해당 메소드는 테스트 대상 메소드임을 의미

@Test
void test() {

}

 

assertXXX(단정문)를 사용하여 테스트를 진행

@Test
void test() {
    assertArrayEquals(a,b); // 배열 a와 b가 일치함을 확인
    assertEquals(a,b); // 객체 a와b의 값이 같은지 확인
    assertSame(a,b); // 객체 a와b가 같은 객체임을 확인
    assertTrue(a); // a가 참인지 확인
    assertNotNull(a); // a객체가 null이 아님을 확인
    // 등등 다양한 단정문 존재
}

 

@Test(timeout = 밀리초) , 테스트 메소드 수행시간 제한

@Test(timeout = 2000)
void test() { }

결과를 반환하는데 2000밀리 초를 넘기면 테스트 실패

 

 

테스트 메소드 Exception 지정하기

@Test(expected = RuntimeException.class)
void test01() { }

이 테스트 메소드는 RuntimeException 발생해야 테스트 성공, 그렇지 않으면 실패

 

 

@BeforeClass , @AfterClass

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@BeforeClass , @AfterClass가 메소드 위에 선언되면 
해당 테스트 클래스 수행시 가장먼저 딱 한번 수행 , 맨 마지막에 딱 한번 수행


(예) 
DB연결시 드라이버 로딩 부분 : @BeforeClass로 지정한 메소드에 작성
DB연결후 드라이버 반납 부분 : @AfterClass로 지정한 메소드에 작성

 

 

@Before , @After

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@Before , @After가 메소드 위에 선언되면
해당 클래스 안의  단위 테스트 메소드(@Test로 지정된)들이 수행되기 전과 후에 각각 실행된다

(예)
단위테스트 메소드 마다 공통으로 어떤 객체를 생성하면, 그 객체를 생성하는 부분을 @Before로 지정된 메소드에 작성한다

 

 

 

 

 

java project 에선

java build path에서 add library 로 JUnit 추가하면 사용가능

 

@Test 만 메소드에 붙어있으면, ( @Test + 메소드 ) 를 포함한 클래스를 Run As junit test 할수 있다

 

create a JUnit Test Case로 만들면 , 아래와 같이 기본적인 세팅이 갖춰져서 클래스가 생성된다

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

class VVVVVV {

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

}

 

spring starter project 에선

spring-boot-starter-test이게 디펜던시로 있고 JUnit도 기본적으로 있을껄?

src/test/java폴더에 @SpringBootTest가 붙은 클래스가 세팅되 있음

src/test/java폴더 여기에 테스트 코드 작성

 

'Spring > 테스트코드' 카테고리의 다른 글

단위 테스트, 통합 테스트  (0) 2024.08.13
Assertions( assertJ 라이브러리 )  (1) 2024.08.13
Mockito  (0) 2024.07.16
Spring Boot 테스트종류  (0) 2024.05.23