Spring | JUnit test

brightbell·2023년 10월 11일

Spring

목록 보기
12/12

JUnit 처리 방법
1. spring-test dependency를 추가한다.
2. @Runwith를 추가한다.
3. @ContextConfiguration을 추가한다.
ContactDao 객체(Bean)을 생성한 방법에 따라서 아래 3가지 방식 중 선택한다.
1) <bean> 태그 : @ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/spring/root-context.xml")
2) @Bean : @ContextConfiguration(classes = AppConfig.class)
3) @Component : @ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml")

// JUnit4를 이용한다.
@RunWith(SpringJUnit4ClassRunner.class)

// ContactDao Bean 생성 방법을 알려준다.
@ContextConfiguration(locations = "file:src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml")

// 테스트 메소드의 이름 오름차순(알파벳순)으로 테스트를 수행한다.
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class ContactUnitTest {

  @Autowired // Spring Container에서 ContactDao 객체(Bean)을 가져온다.
  private ContactDao contactDao;
  
  @Test  // 테스트를 수행한다.
  public void test01_삽입테스트() {
    ContactDto contactDto = new ContactDto(0, "이름", "연락처", "이메일", "주소", "");
    int insertResult = contactDao.insert(contactDto);
    assertEquals(1, insertResult);  // insertResult가 1이면 테스트 성공이다.
  }

  @Test // 테스트를 수행한다.
  public void test02_조회테스트() {
    int contact_no = 1;
    ContactDto contactDto = contactDao.selectContactByNo(contact_no);
    assertNotNull(contactDto);  //contactDto가 not null이면 테스트 성공이다.
  }
  
  @Test
  public void test03_삭제() {
    int contact_no = 1;
    int deleteResult = contactDao.delete(contact_no);
    assertEquals(1, deleteResult);  // deleteResult가 1이면 테스트 성공이다.
    // assertNull(contactDao.selectContactByNo(contact_no));  select 결과가 null이면 테스트 성공이다.
    
  }

logback.xml

<configuration>

	<!-- Appenders : 로그를 출력하는 Appender 모음 -->
  
    <!-- 
      %d{날짜시간패턴} : 로그기록시간 (SimpleDateFormat과 같은 날짜시간패턴)
      %level           : 로그 레벨 (OFF > ERROR > WARN > INFO > DEBUG > TRACE)
      %logger          : 로그를 찍는 클래스 (어떤 클래스가 동작할 때 로그가 남겨지는가?)
      %msg             : 로그 메시지
      %n               : 줄 바꿈  
    
     -->
    
    <!-- Console에 로그를 찍는 Appender -->
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
        <pattern>[%d{HH:mm:ss, Asia/Seoul}]%-5level: %logger-%msg%n</pattern>
      </encoder>
	</appender>
	
    <!-- File에 로그를 찍는 Appender -->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
      <file>/log/app09_log.log</file>
      <append>true</append>
      <immediateFlush>true</immediateFlush>
      <encoder>
        <pattern>[%d{HH:mm:ss, Asia/Seoul}]%-5level: %logger-%msg%n</pattern>
      </encoder>
    </appender>
    
    <!-- 매일 새로운 로그 파일을 만드는 RollingFileAppender -->
    <appender name="rolling" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>/log/app09.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <maxFileSize>100MB</maxFileSize>
        <maxHistory>30</maxHistory>
        <totalSizeCap>3GB</totalSizeCap>
      </rollingPolicy>
      <encoder>
        <pattern>[%d{HH:mm:ss, Asia/Seoul}]%-5level: %logger-%msg%n</pattern>
      </encoder>
    </appender>
    
    
	<!-- Application Loggers -->
	<logger name="com.gdu.app09" level="info"/>
	
	<!-- 3rdparty Loggers -->
	<logger name="org.springframework" level="info"/>
    <logger name="log4jdbc" level="info" />
    <logger name="jdbc.sqlonly" level="info" />         <!-- 쿼리문 출력하기 -->
    <logger name="jdbc.sqltiming" level="off" />        <!-- 쿼리문 + 실행시간 출력하기 -->
    <logger name="jdbc.resultsettable" level="info" />  <!-- SELECT 결과를 테이블 형식으로 출력하기 -->
    <logger name="jdbc.connection"     level="off" />   <!-- Connection 연결/종료 정보 출력하기 -->
    <logger name="jdbc.audit"          level="off" />   <!-- ResultSet을 제외한 jdbc 호출 정보 출력하기 -->
    <logger name="jdbc.resultset"      level="off" />   <!-- ResultSet을 포함한 jdbc 호출 정보 출력하기 -->
	<!-- Root Logger -->
	<root>
		<priority value="warn" />
		<appender-ref ref="console" />
        <appender-ref ref="rolling" />
	</root>
	
</configuration>

0개의 댓글