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
'두두의 IT > Spring' 카테고리의 다른 글
객체지향설계와 스프링 (1) | 2022.10.13 |
---|---|
개발 프로세스 (비즈니스 요구사항, 설계) (0) | 2022.10.13 |
Spring Boot Mapper & Dao Annotation (0) | 2022.05.25 |
Spring Boot Service Annotation (0) | 2022.05.23 |
Spring Boot Main Annotation (0) | 2022.05.23 |