SpringFramework/BASIC

[JunitTest 1] 단일 테스트 / 오라클 DB 연결 Test / 자동 리소스 닫기

유혁스쿨 2020. 9. 4. 17:17
728x90
반응형

JunitTest란 

test패키지에서 test를 사용할 때 간단하게 사용합니다

Junit Test는 메인메서드를 만들지 않고 바로 테스트를 해볼수 있습니다.

 

 

오라클 DB 연결 Test 


우선 void메서드를 만듭니다.

public class DbConnectTest {
	
    private static final String DRIVER = "oracle.jdbc.OracleDriver";
    private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
    private static final String UID = "week";
    private static final String PWD = "week";

    public void connectTest() {
	
        Connection con = null;
        try {
            Class.forName(DRIVER);
            con = DriverManager.getConnection(URL,UID,PWD);
            if(con != null) {
                System.out.println("DB 커넥션 성공!");
                System.out.println("conn : "+con);
            }else {
                System.out.println("DB정보를 받지 못했습니다.");
                System.out.println("DB연결에 실패 했습니다.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try { con.close();}catch(Exception e) {e.printStackTrace();}
        }
    }
}

실제로는 이 로직 test를 진행하기 위해서는 Main메서드가 필요하며 DbConnectTest객체를 생성해야 .connectTest() 메서드를 호출할 수 있게 됩니다.

 


하지만 이것을 단순하게 처리할수 있는 방법인 스프링의 junit 단위테스트 방법이 있습니다.

public class DbConnectTest {
	
    private static final String DRIVER = "oracle.jdbc.OracleDriver";
    private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
    private static final String UID = "week";
    private static final String PWD = "week";

    @Test
    public void connectTest() {
	
        Connection con = null;
        try {
            Class.forName(DRIVER);
            con = DriverManager.getConnection(URL,UID,PWD);
            if(con != null) {
                System.out.println("DB 커넥션 성공!");
                System.out.println("conn : "+con);
            }else {
                System.out.println("DB정보를 받지 못했습니다.");
                System.out.println("DB연결에 실패 했습니다.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try { con.close();}catch(Exception e) {e.printStackTrace();}
        }
    }
}

메서드에 @Test 어노테이션을 선언합니다.
@Test 어노테이션은 JUnit 연습용 테스트를 수행할수 있도록 선언해주는 애노테이션입니다.

 

try-catch-resources 자동 리소스 닫기

public class DbConnectTest {
	
    private static final String DRIVER = "oracle.jdbc.OracleDriver";
    private static final String URL = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
    private static final String UID = "week";
    private static final String PWD = "week";

    @Test
    public void connectTest() {
	
        try(Connection con = DriverManager.getConnection(URL,UID,PWD)){
            Class.forName(DRIVER);
            if(con != null) {
                System.out.println("DB 커넥션 성공!");
                System.out.println("conn : "+con);
            }else {
                System.out.println("DB정보를 받지 못했습니다.");
                System.out.println("DB연결에 실패 했습니다.");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

java 7 버전에서 추가된 문법으로 예외 발생여부와 상관없이 finally에서 항상 처리해줘야했던 리소스객체(입출력 스트림, 소켓 등)의 close()메소드를 호출하여 안전하게 리소스를 닫아줍니다.

 

Connection은 AutoClosable인터페이스를 구현 상속을 받았기 때문에 try문의 ( ) 괄호 내에서 객체를 생성하면
finally문에서 명시적 코드로 close() 메서드를 호출하여 닫지 않아도 자동으로 생성된 각 객체마다 메서드를 호출하여 자동으로 닫히게 해줍니다.

 


JUnit단위Test수행

 

outline을 열어줍니다.


outline에서 메서드 선택 우클릭 jUnitTest클릭

 

junit창 우측 바가 초록색이면 성공, 빨간색이면 실패 입니다.

 

 

 

만약 오류가 났다면

이 버튼을 누르면 콘솔창에 오류내용이 출력됩니다.

728x90
반응형