다가오는 다음을 향해

[Spring MVC] 게시글 자동등록 - 단위테스트 본문

국비학원 공부노트/Spring MVC

[Spring MVC] 게시글 자동등록 - 단위테스트

hyeseo 2022. 4. 14. 00:53

[ 개발환경 ]
MacBook Air M1 2020년형 
eclipse [2021-3 var]
Java [zulu-8]
JSP
Tomcat [Apache Tomcat/9.0.58]

[ version ]
- springframework - 4.3.14
- aspectj - 1.8.9
- Test - 4.12

Maven repository
- mysql-connector-java  8.0.27
- spring-jdbc - 4.3.14
- spring-test - 4.3.14

mybatis - 3.4.4
mybatis-spring - 1.3.1


 

 

게시글 자동등록

 

게시글 자동등록 목적


게시글 페이징 처리를 위한 준비를 하기 위해 작성했다.

 

작성방법


단위테스트를 하기 위해서 사진 위치에 파일을 만들었다.

 

1. BoardCreateTest.java 작성

package kr.co.dong;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

import javax.inject.Inject;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


import kr.co.dong.board.BoardDAO;
import kr.co.dong.board.BoardDTO;

//현재 테스트 코드를 실행할 때 스프링이 로딩 되도록 하는 부분.
@RunWith(SpringJUnit4ClassRunner.class)
//속성 경로에 xml파일을 이용해 스프링이 로딩 된다.
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/spring/**/root-context.xml" })

public class BoardCreateTest {
    //위에서 스프링이 정상적으로 동작할 경우 스프링이 생성해서 주입해준다.
	@Inject
	private BoardDAO boardDAO;
	
	@Test
	public void testInsert() throws Exception {
		BoardDTO boardDTO;
		String formatedNow = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd  HH:mm:ss"));
		
		
		for (int i= 1; i<=1000; i++) {
			boardDTO = new BoardDTO();
			boardDTO.setTitle("Test Title[" + i + "]");
			boardDTO.setContent("Test Content -" + i);
			boardDTO.setRegdate(formatedNow);
			boardDTO.setId("root");
			
			
			boardDAO.registerBoard(boardDTO); // 글쓰기
			Thread.sleep(1000); // 1초간 대기
		}
	}
}

 

2. root-context.xml에 component-scan 을 등록해준다.

 

<context:component-scan base-package="패키지 이름"/>

 

root-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc"
	xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd
		http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd
		http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">
	
	<!-- Root Context: defines shared resources visible to all other web components -->
	<bean id="dataSourceSpied" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		 <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
		 <property name="url" value="jdbc:mysql://localhost:3306/SCOTT?serverTimezone=UTC"></property>
		 <property name="username" value="아이디"></property>
		 <property name="password" value="비밀번호"></property>	 
	</bean>
	<!-- db Log추가 -->
 	<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource"> 
	     <constructor-arg ref="dataSourceSpied" /> 
	     <property name="logFormatter"> 
	         <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter"> 
	             <property name="loggingType" value="MULTI_LINE" /> 
	             <property name="sqlPrefix" value="SQL : "/> 
	         </bean> 
	     </property> 
	 </bean>
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <property name="configLocation" value="classpath:/mybatis-config.xml"></property>
      <property name="mapperLocations" value="classpath:mappers/**/*.xml"></property>
   </bean>
   <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">
      <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>     
   </bean>
   <context:component-scan base-package="패키지이름"/>
</beans>

 

 

3. Junit Test 를 실행하면 자동으로 게시글을 등록한다.

 

BoardCreateTestView