JUnit
이직을 준비하면서 JUnit을 사용하게 되었고
JUnit을 자주 사용하기 위해 기본적인 내용을 기록으로 남깁니다.
코드로 배우는 스프링 웹 프로젝트 교재를 학습하면서 배운 기억을 끄적이며…
JUnit 이란
- 단위테스트를 지원하는 도구 입니다.
- 자바 프로그래밍 언어용 유닛 테스트 프레임워크 입니다.
- JUnit 5는 차세대 JUnit 이며 JVM에서 개발자 측 테스트를위한 최신 기반을 만드는 것입니다.
- JUnit 5는 Java 8 이상에 초점을 맞추고 다양한 스타일의 테스트를 사용할 수 있습니다.
JUnit을 사용하여 JDBC Connection 테스트 하기!
jdbc를 이용하여 간단하게 로컬에 설치된 postgresql db connection 테스트를 진행 해보겠습니다.
아래와 같이 src.test.java 디렉토리 하위에 com.aks.woorim.common.config 패키지 생성 후
DataSourceTest.java 소스를 작성 합니다.
(Spring Starter Project를 이용하여 프로젝트를 생성 함 설명 생략)
[소스 내용]
package com.aks.woorim.common.config;
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;
public class DataSourceTest {
static {
try {
Class.forName("org.postgresql.Driver");
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
e.getMessage();
}
}
@Test
public void teswtConnection() {
try(Connection con = DriverManager.getConnection(
"jdbc:postgresql://localhost:5432/postgres"
, "postgres"
, "test123")){
assertNotNull(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
로직 설명
- static 초기화 블럭을 통해 postgresql 관련 Driver를 가져옵니다.
- @Test 를 통해 JUnit 테스트 메소드 대상임을 명시 해줍니다. (중요!)
- try-with-resource 를 사용하여 connection 자원을 가져옵니다
- assertNotNull(con) 를 이용하여 자원을 정상적으로 가져왔는디 여부를 테스트 합니다.
try-with-resource (알아두면 유용한 지식)
- JAVA7 에서 추가된 구문
- 과거에는 file, stream 등 자원을 반납할 때 사용하는 close() 처리는 finally 문에서 처리 하였습니다.
하지만 해당 구문을 통해 try 괄호() 안에서 생성된 자원은 자동으로 close() 처리 됩니다. - 해당 구문은 AutoClosable 혹은 Closeable 인터페이스를 구현한 자원의 경우에만 사용가능합니다.
JUnit test 실행하기!
DataSourceTest.java 우클릭 → Run As → JUnit Test
JUnit 탭으로 이동되며 @Test 어노테이션이 선언된 메소드 단위로 테스트를 수행합니다.
[성공 시]
[실패 시]
assertNotNull() 메소드가 실패 시 Failures 개수가 증가하며 Failure Trace를 통해 오류 내용을 확인 할 수 있습니다.
자주 사용하는 assert Method
assert method - JUnit에서 단위 테스트를 검증을 할 때 사용되는 메소드
더 많은 메서드는 JUnit 5 JavaDoc 참고
메서드 명 | 설 명 |
---|---|
assertNull(object) | 값이 null이면 성공 |
assertNotNull(object) | 값이 Null아니면 성공 |
assertTrue(condition) | 값이 True이면 성공 |
assertFalse(condition) | 값이 False이면 성공 |
assertEquals(expected, actual) | expected 값과 actual 값이 같으면 성공 |
assertNotEquals(unexpected, actual) | expected 값과 actual 값이 다르면 성공 |
assertSame(expected, actual) | expected 객체와 actual 객체가 동일한 참조값이면 성공 |
assertNotSame(unexpected, actual) | expected 객체와 actual 객체가 다른 참조값이면 성공 |
댓글남기기