단위 테스트

✒️ 2025-05-28 11:40 내용 수정


하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트


단위 테스트 설정

  1. Annotation 기반 설정 파일#프로젝트 설정, 방명록 만들기대로 파일들 및 패키지를 준비한다.
  2. https://mvnrepository.com/artifact/org.springframework/spring-test 에 접속해서 원하는 버전의 Maven 항목을 pom.xml의 dependencies에 추가한다. (5.1.20 버전 사용)
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>5.1.20.RELEASE</version>
    <scope>test</scope>
</dependency>

unittest 1.png

  1. https://mvnrepository.com/artifact/junit/junit 에 접속해서 4.12 버전 이상을 선택해 Maven 항목을 pom.xml의 dependencies에 추가한다. (4.12버전 사용)
    • Spring TestContext Framework 5.1.20 버전 사용 시 junit 4.12 버전 이상을 요구한다.
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

unittest 2.png

  1. src/main/java 폴더에 dependency 패키지를 만들고, Coding 클래스와 Computer 클래스를 만든다.
package dependency;

import org.springframework.stereotype.Component;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Component
@RequiredArgsConstructor
@Getter
public class Coding {

	// 코딩하려면 컴퓨터가 필요하다
	private final Computer computer;
}
package dependency;

import org.springframework.stereotype.Component;

import lombok.Getter;

@Component
@Getter
public class Computer {
	
	int ram;
}
  1. Context_3_dao 클래스에 객체를 생성한다.
package context;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("dependency") //Context_3_dao에서 dependency에 있는 클래스를 모두 Bean으로 만듦
public class Context_3_dao {
}
  1. 이번엔 src/test/java 폴더에 dependency 패키지를 만들고, DependencyTest 클래스를 만든다.
Annotation 설명
@RunWith JUnit 프레임워크의 테스트 실행을 위해 Tomcat 대신에 Spring에 접근할 수 있도록 해줌
@ContextConfiguration 설정 파일을 대신 읽어주는 Annotation
@Log4j Log4j에 대한 로거가 자동으로 생성되고, 로깅을 수행하는 Annotation
@Test Test에 사용될 메소드임을 알려주는 Annotation
package dependency;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import context.Context_3_dao;
import lombok.extern.log4j.Log4j;

// JUnit 프레임워크의 테스트 실행 방법
// Tomcat 대신에 Spring에 접근할 수 있도록 해줌
@RunWith(SpringJUnit4ClassRunner.class)

// 설정 파일을 대신 읽어주는 Annotation
@ContextConfiguration(classes= {Context_3_dao.class})

@Log4j
public class DependencyTest {
	
	@Autowired
	private Coding coding;
	
	// Test에 사용될 메소드임을 알려주는 Annotation
	@Test
	public void check() {
		log.info("-----------------");
		log.info("coding : " + coding);
		log.info("computer : " + coding.getComputer());
		log.info("ram : " + coding.getComputer().getRam());
		log.info("-----------------");
	}
}
  1. 상단 메뉴 바에서 Run - Run As - JUnit Test로 프로젝트를 실행한다.

unittest 3.png

unittest 4.png