스프링 프레임워크(Spring Framework) MySQL 설정과 스프링 테스트
스프링과 데이터베이스가 어떻게 연동되는지 이해하고 실습을 통해 확인해보도록 하겠습니다.
데이터베이스는 MySQL 5.7 버전을 사용했으면 window 기준 설치 방법은 아래 링크를 참고해주시면 됩니다.
* MySQL 5.7 Download
* MySQL 5.7 설치
1. DB 테스트
MySQL 설치가 완료되면 간단한 스키마와 테이블을 작성하고 연동 테스트를 진행합니다. 실습을 진행하기 전에 설치한 DB의 설정을 확인하고 문자열이 UTF-8로 세팅되어 있는지 확인합니다.
아래 링크를 참고하여 DB의 charset 설정을 확인해줍니다.
1.1 MySQL 연결 테스트와 jUnit
MySQL 설치와 설정이 완료되었다면 JDBC 연결이 정상적으로 이루어지는지 확인해보겠습니다. 테스트 코드는 jUnit을 이용하여 작성되며 스프링 프로젝트를 생성한 시점에 jUnit 설정이 완료된 상태이므로 테스트 코드를 바로 작성하고 실행할 수 있습니다.
다음은 jUnit과 관련된 기본적인 사항입니다.
- @Test
테스트해야하는 메소드 위에 추가하는 애노테이션
jUnit은 해당 메소드를 테스트 코드로 간주하고 테스트를 진행함 - @Before
테스트 코드 실행에 앞서 준비되어야하는 내용을 추가하는 애노테이션
@Test 메소드 실행 전에 실행됨 - @After
테스트 코드 실행 완료 후에 실행되는 메소드에 추가하는 애노테이션 - org.junit.Assert.assertxxx
테스트 중에 발생하는 값을 확신하는 용도로 사용
테스트 도중에 특정 값이나 상태를 예상하고 체크하는 용도로 사용
스프링 프로젝트에서 test 폴더 하위에 java class 파일을 생성하고 메서드에 @Test 애노테이션을 추가해주면 test 가능한 파일로 적용됩니다.
1.2 MySQL 테스트 관련 라이브러리
MySQL과 JDBC의 연결을 위해서는 Connector/J 라는 JDBC 라이브러리가 필요합니다. 생성한 스프링 프로젝트의 pom.xml 파일에 아래의 내용을 추가해줍니다.
1 2 3 4 5 | <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> | cs |
이 라이브러리는 MySQL 설치시 자동으로 다운로드되어 일반적으로 C:\Program Files (x86)\MySQL\Connector J 8.0 경로에서 확인이 가능하지만 아래 링크에서 다운로드 받는 것도 가능합니다.
1.3 JDK와 jUnit 버전 변경
JDK 1.7 이상의 버전을 설치하여 try-with 구문을 사용하고자 할 경우 다음과 같이 pom.xml의 Java 버전을 확인하고 변경해줍니다.
1 2 3 4 5 6 | <properties> <java-version>1.8</java-version> <org.springframework-version>4.3.8.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> </properties> | cs |
전체 테스트를 담당하는 jUnit은 프로젝트를 생성할 경우 4.7 버전 정도로 설정됩니다. 높은 버전의 jUnit을 써야 하는 경우 pom.xml에서 아래 항목을 변경해줍니다.
1 2 3 4 5 6 | <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> | cs |
1.4 JDBC 연결 테스트 코드 만들기
JDBC 연결 테스트 코드 작성은 src/test/java 경로 하위에 MySQLConnectionTest.java 파일을 다음과 같이 작성해줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package com.myproject.myapp; import java.sql.Connection; import java.sql.DriverManager; import org.junit.Test; /* * MySQlConnectionTest * @Test */ public class MySQLConnectionTest { private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://127.0.0.1:3306/springdb?useSSL=false"; private static final String USER = "bybit"; private static final String PW = "bybit"; @Test public void testConnection() throws Exception { Class.forName(DRIVER); // AutoCloseable 인터페이스를 구현한 타입의 변수 try(Connection conn1 = DriverManager.getConnection(URL, USER, PW); Connection conn2 = DriverManager.getConnection(URL, USER, PW);) { System.out.println("===== mysql connection test start ====="); System.out.println(conn1); System.out.println(conn2); System.out.println("===== mysql connection test end ====="); } catch(Exception e) { e.printStackTrace(); } } } | cs |
URL 설정은 생성한 스키마명을 뒤에 함께 작성해줍니다.
이후 다음과 같이 jUnit 테스트를 실행하여 결과를 확인합니다.
정상적으로 실행되면 아래와 같이 console에 Connection 객체가 생성되어 출력되는 것을 확인할 수 있습니다.
이상으로 스프링의 MySQL 설정과 jUnit을 이용한 테스트에 대해서 알아봤습니다.
※ 참고 문헌
구멍가게 코딩단, 『코드로 배우는 스프링 웹 프로젝트』, 남가람북스(2015), p58 ~ p76. Chapter 1-3. 예제를 위한 MySQL의 설정과 스프링 테스트
limkydev.tistory.com, [DataBase] MySQL 5.7 설치 방법, https://limkydev.tistory.com/86
repacat.tistory.com, 윈도우10에서 MySQL 캐릭터셋 UTF8로 변경하기, https://repacat.tistory.com/19