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 객체가 다른 참조값이면 성공

Reference

태그:

카테고리:

업데이트:

댓글남기기