웹개발/SpringBoot

[JUnit] 단위 테스트

뎁쭌 2023. 12. 21. 16:43
728x90
반응형

JUnit

단위 테스트

- 대규모 애플리케이션에는 수천 개의 코드 파일과 수백만 줄의 코드가 있고 이러한 코드는 여러개의 레이어에 분산되어 있다, 애플리케이션을 구축할 때마다 코드가 제대로 작동하는지 확인해야 한다. 즉, 예상하는 동작과 실제 애플리케이션의 동작을 확인해야 한다.

 

테스트를 수행하는 방법

1. 전체 애플리케이션을 배포하고 테스트

- jar 파일이나 war파일을 빌드하고 어딘가에 배포 후 확인 : 시스템 테스트, 통합 테스트라 불린다.

 

2. 애플리케이션 코드의 특정한 단위를 독립적으로 테스트

- 특정 메서드나 메서드 그룹을 테스트 하며 확인 : 단위 테스트(JUnit)

 

단위 테스트의 장점

- 버그를 조기에 찾고 해결할 수 있다

- 단기적으로는 비용이 많이 들지만 장기적으로 비용 절감

 

JUnit5 (Junit_jupiter)

 

@Test 어노테이션을 이용하여 테스트하고자 하는 메서드 실행

@Test
void test(){
// 해당 코드에서 Assert가 일어나지 않는다면 테스트는 통과한다.
}


Junit에서 사용할 수 있는 메서드

 

- assertEquals(a, b) : 2개의 값이 같지 않다면 assert

assertEquals(expectedRet, ret);

 

- assertTrue(a) : 값이 true가 아니라면 assert

assertTrue(expectedRet);
// === assertEquals(expectedRet, true)


- assertFalse(a) : 값이 False가 아니라면 assert

assertFalse(expectedRet);
// === assertEquals(expectedRet, false)

 

- assertArraysEquals(a[], b[]) : 2개의 배열이 같지 않다면  assert

assertArraysEquals(expectedRet[], ret[])
 

Junit에서 사용할 수 있는 어노테이션

  1. @BeforeEach : 테스트 이전에 실행하고 싶은 메서드
  2. @BeforeAll : 모든 테스트 이전에 실행하고 싶은 메서드
  3. - static 키워드를 사용해야
  4. @AfterEach : 테스트가 끝나고 실행하고 싶은 메서드
  5. @AfterAll : 모든 테스트가 끝나고 실행하고 싶은 메서드
  6. - static 키워드를 사용해야
  7.  
  8. 테스트
@BeforeEach
void beforeEach(){
System.out.println("BeforeEach");
}
@BeforeAll
static void beforeAll(){
System.out.println("Before All");
}
@AfterEach
void afterEach(){
System.out.println("AfterEach");
}
@AfterAll
static void afterAll(){
System.out.println("After All");
}
@Test
void test1(){
System.out.println("test1");
}
 
@Test
void test2(){
System.out.println("test2");
}
@Test
void test3(){
System.out.println("test3");
}

 

출력 결과

Before All
BeforeEach
test1
AfterEach
BeforeEach
test2
AfterEach
BeforeEach
test3
AfterEach
After All