반응형
단위 테스트
개발을 하다 보면, 만들어둔 기능이 잘되는 지 확인하고 싶을때가 있다. 그럴때는 JUnit4를 이용해서 각각 기능별로 단위테스트(Unit Test) 를 진행하면, 안정적으로 동작 여부를 검증할 수 있게 된다.
MyBatis 단위 테스트
Spring Legacy 환경에서는 간단한 테스트나 빠른 검증이 필요할 때, Spring Context 없이도 MyBatis만으로 Mapper를 테스트할 수 있다.
pom.xml
먼저 pom.xml 파일에 단위테스트를 하기 위하여 JUnit4와 Spring-Test 라이브러리를 추가한다.
<!-- JUnit4 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
<!-- Spring-test-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>3.2.9.RELEASE</version>
<scope>test</scope>
</dependency>
Test 파일 생성
테스트 하고자 하는 Mybatis Mapper파일을 선택 한 후 New > Other 에서 JUnit Test Case를 생성한다.
MyBatis 연결 및 테스트
@BeforeClass를 사용하여 @Test가 진행 되기 전에 Sqlsession 객체를 생성한다.
Sqlsession에는 데이터베이스 연결 및 Config 파일 설정을 해준다.
package com.spring.demo.config.persistence;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.HashMap;
import java.util.List;
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import org.junit.BeforeClass;
import org.junit.Test;
public class ApiConfigServiceTest {
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void setup() throws Exception {
// 1. 데이터베이스 연결
PooledDataSource dataSource = new PooledDataSource();
dataSource.setDriver("net.sf.log4jdbc.sql.jdbcapi.DriverSpy");
dataSource.setUrl("jdbc:log4jdbc:postgresql://127.0.01:5432/database");
dataSource.setUsername("user");
dataSource.setPassword("password");
// 2. config 생성 및 설정
TransactionFactory transactionFactory = new JdbcTransactionFactory();
Environment env = new Environment("dev", transactionFactory, dataSource);
Configuration config = new Configuration(env);
// 3. Mapper 등록 (패키지 전체 등록도 가능)
config.addMappers("com.spring.demo");
// 4. SqlSessionFactory 생성
sqlSessionFactory = new SqlSessionFactoryBuilder().build(config);
}
@Test
public void testListApi() throws Exception {
SqlSession session = sqlSessionFactory.openSession();
ApiConfigService service = session.getMapper(ApiConfigService.class);
List<HashMap<String, Object>> listAPI = service.listApi();
assertEquals("map", listAPI.get(0).get("api_name"));
assertEquals("weather", listAPI.get(1).get("api_name"));
}
}
JUnit Test 진행
Run As에서 JUnit Test를 진행한다.
참고
JUnit4 설정
Spring과 JUnit의 버전이 호환되지 않아 실행이 안될때가 있는데 그럴때는 설정에서 JUnit 버전을 변경해줘야 한다.
반응형
'Spring' 카테고리의 다른 글
jjwt 서버 적용 오류 (0) | 2023.06.12 |
---|---|
스프링 DATA JPA와 Mysql 사용 시 원하는 표기법으로 컬럼명 생성하기 (0) | 2023.05.13 |
Requesting Java AST from selection 오류 해결법 (0) | 2023.03.11 |
반복 작업 만들기 (0) | 2023.02.02 |
Restful web service 만들기 (0) | 2023.02.01 |