1. 프로젝트의 main 폴더 아래에 test 폴더를 만든다.

test 폴더 내부에 테스트 클래스를 만들지 않으면 정상적으로 junit 클래스를 import 해올수 없어 테스트 코드를 실행할수 없다.
2. @Test 어노테이션을 이용한 테스트 코드 메서드 작성
@Test
void test(){
}
해당 어노테이션이 붙은 메서드는 main 클래스처럼 실행이 가능해진다.
main 클래스가 그렇듯, 반환값은 존재하지 않는다.
**** 만약 @Test 어노테이션의 import 클래스가 org.junit.jupiter.api.Test 가 아니라면 라이브러리를 추가해야 한다.
gradle의 경우 다음의 코드를 작성해줘야 한다.
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.8.1'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
# 테스트 내부적으로 필요한 Assertions 클래스 라이브러리
testImplementation("org.assertj:assertj-core:3.25.1")
}
test {
useJUnitPlatform()
}
3. assertJ 의 Assertions 를 import 해온다.
import static org.assertj.core.api.Assertions.*;
4. 실행 코드와 그 검증 코드를 작성한다.
@Test
void make24dtoTest(){
int a = 3;
int b = 5;
assertThat(a+b).isEqualTo(5);
}
}
assertThat의 괄호 내부의 값과 isEqualTo의 내부값이 같으면 테스트가 무사 통과, 다르면 테스트가 실패한다.

isEqualsTo() 매개변수 값은 assertThat 의 매개변수 값에 따라 타입이 바뀐다.
만약 특정 코드가 실행시 오류가 발생하는지, 또는 반환값이 없는 코드가 정상적으로 작동하는지 검증보고 싶을수도 있다.
그땐 assertThat 대신 오류 코드를 검증하기 위한 assertThatThrownBy() 나 정상 작동을 검증하기 위한 assertThatCode() 를 사용해야 한다.
@Test
void test(){
assertThatCode(()->{
System.out.println("aaa");
}).doesNotThrowAnyException();
}
// 람다식 내부의 코드를 실행할때 오류가 발생하지 않으면 테스트 통과
@Test
void test(){
assertThatThrownBy(()-> {
throw new RuntimeException();
}).isInstanceOf(RuntimeException.class);
}
// 내부 람다에서 오류가 발생하면 그 Exception의 타입을 검증할수 있다.
'공부 > java' 카테고리의 다른 글
IO 와 NIO 를 이용한 입출력 (2/2) (0) | 2024.05.17 |
---|---|
IO 와 NIO 를 이용한 입출력 (1/2) (0) | 2024.05.13 |
자바(java)의 생성자 함수 (0) | 2023.01.23 |
자바(java)의 클래스 상속 (0) | 2023.01.23 |
자바(java)의 싱글톤 패턴 (1) | 2023.01.23 |