JUnit4의 테스트 클래스 작성에 대한 가이드입니다.

 

 


 

 

테스트 클래스는 POJO(Plain Old Java Object) 기반으로 작성되며,

세 가지 어노테이션을 제공합니다.

 

  • @Before :
    매 단위 테스트 메서드 수행 전, 전처리 수행합니다.
    단위 테스트에 필요한 자원 객체를 생성하는 작업을 수행합니다.

  • @Test :
    단위 테스트 메서드임을 JUnit에게 알려줍니다.
    추가적인 어노테이션의 기능으로 timeoutexpected가 있습니다.

  • @After :
    매 단위 테스트 메서드 수행 후에, 후처리 수행합니다.

    전처리에서 생성 및 획득한 자원 객체를 해제하는 작업을 수행합니다.

 

 

여기서 단위 테스트는 1개의 기능을 테스트하는 것을 의미합니다.

 

 

기본적인 테스트 클래스 세팅은 다음과 같습니다.

 

@Log4j2
@NoArgsConstructor
public class AppTest  {
	
	
    @Before
    public void setUp() {
        // 전처리(Pre-processing), Optional
        log.trace("setUp() invoked.");
    } // setUp
	
    @Test
    public void testXXX() {
        log.trace("testXXX() invoked.");
    } // testXXX
	
    @After
    public void tearDown() {
        // 후처리(Post-processing), Optional
        log.trace("tearDown() invoked.");
    } // tearDown

} // end class

 

 

여기서 주의할 점은,  테스트 클래스는 반드시 기본 생성자를 가져야 합니다.

저는 Lombok을 사용하고 있으므로, 어노테이션을 통해 생성하였습니다.

필요에 따라 필드 생성도 가능합니다.

 

테스트 클래스를 실행하면 JUnit View에 테스트 결과를 보여줍니다.

 

 


 

 

만약 전처리/후처리/단위 테스트 메서드들 중 메서드 블록안에서 예외 발생 가능한 코드가 있다면, 반드시 예외 처리없이 위로 던져야 합니다.

그 이유는 위로 던지면 JUnit Test Framework가 받게 되고, JUnit은 받은 예외를 통해 테스트 통계 자료를 산출하기 위함입니다.

 

즉, 컴파일러가 오류을 체크했다면 throws Exception를 통해 오류를 모두 위로 던지면 됩니다.

 

 

 

 

 

 

 

'Spring boot > Maven' 카테고리의 다른 글

Maven Dependency List  (0) 2023.09.01
JUnit5  (0) 2023.08.23
Maven dependency 추가하기  (0) 2023.08.21
pom.xml(메이븐 설정파일)  (0) 2023.07.28

 

 

 

Maven Project을 참고하여 pom.xml에 라이브러리를 추가할 수 있습니다.

저는 JUnit을 추가하겠습니다.

 

 


 

 

JUnit은 대표적으로 4, 5 두 가지 빌드가 있는데, junit5를 설정하겠습니다.

 

 

JUnit은 pom.xml에 하나의 의존성만 설정하면 됩니다.

 

  • JUnit Jupiter Api

 

의존성을 추가하기 위해 Maven Repository를 방문합니다.

 

검색창에 JUnit을 입력합니다.

 

Maven Repository

 

모든 의존성 모두 같은 방식이므로 다른 의존성 또한 동일하게 진행됩니다.

 

의존성을 클릭합니다.

 

Maven Repository

 

빨간색 바탕의 빌드 버전은 사용하시면 안됩니다.

 

가장 최신 버전인 5.10.0을 클릭합니다.

 

Maven Repository

 

Maven 메뉴에서 해당 코드를 클릭하면 복사됩니다. 

복사한 코드를 Maven Project의 빌드 설정 파일인 pom.xml에 paste합니다.

 

 

  <dependencies>
	  
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>5.10.0</version>
      <scope>test</scope>
    </dependency>
    
    <!-- 기타 의존성 -->
    
  </dependencies>

 

 

 

'Spring boot > Maven' 카테고리의 다른 글

Maven Dependency List  (0) 2023.09.01
JUnit5  (0) 2023.08.23
JUnit4  (0) 2023.08.22
pom.xml(메이븐 설정파일)  (0) 2023.07.28

 

 

 

pom.xml은 Maven Project의 설정 파일입니다.

Maven Project를 생성하고 pom.xml을 수정해야 합니다.

VScode에서 XML 확장자 설치 후 편집하시면 편합니다.

XML 열기 -> pom.xml 파일을 열고 우클릭 후 Open With -> Other -> External programs -> Code Worksapce Source File

 

** 추천 확장자 **

더보기

- XML

- XML Tools

- XML Format

- XML to JSON

 

 


 

 

 

Maven을 생성 후 pom.xml의 최상단에 다음의 DOCTYPE 태그를 추가해야 합니다.

 

<?xml version = "1.0" encoding = "UTF-8"?>

 

그 후 <project> 태그의 속성을 가독성 있게 정리합니다.

 

<project
	xmlns="http://maven.apache.org/POM/4.0.0" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

 

 

그 아래 태그들은 넘어갑니다.( groupId, artifactId, version )

 

 

<packaging> 태그는 Apache Maven을 통해 진행한 프로젝트의 최종 파일의 확장자를 결정합니다.

여기서 pom.xml은 jar 확장자로 되어 있습니다. 

웹앱 프로젝트에서는 war 확장자로 되어 있습니다.

 

<packaging>jar</packaging>
<!-- <packaging>war</packaging> -->

 

- <name> 태그는 진행하는 프로젝트의 이름입니다.

- <name> 태그 아래의 <url>은 프로젝트의 주소를 입력하는 곳인데 일반적으로 잘 사용하지 않습니다.

 

 

<properties> 태그는 속성을 정의합니다.

<properties> 가 감싸고 있는 부분은 자바 버전, 자바의 환경변수를 세팅합니다.

태그의 이름은 사용자가 임의로 지을 수 있습니다.

 

  <!--  현재 프로젝트에 필요한 속성을 정의하는 태그-->
  <properties>
    <java-version>17</java-version>
    <java-home>${env.JAVA_HOME}</java-home>
    
    <!-- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> defualt -->
  </properties>

 

그리고 <properties> 태그 위 아래로 두 칸씩, 사용자 정의 속성과 Encoidng은 1칸씩 공백을 두어 가독성을 높입니다.

 

 

그 아래 <dependencies> 태그는 필요한 라이브러리, 즉 의존성을 정의합니다.

의존성은 Maven Repository에서 <dependency> 태그로 넣으시면 됩니다.

추가된 의존성은 Maven Project 내부에 Maven Dependencies에서 확인할 수 있습니다.

 

자세한 의존성 정의 방법은 추후에 다루겠습니다.

저는 junit5와 lombok 의존성을 추가하였습니다.

 

  <dependencies>
  
    <!-- 테스트 코드 api -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    
    <!-- 추가된 롬복 의존성 -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <!-- 의존성의 버전 -->
      <version>1.18.28</version>
      <!-- scope의 provided는 컴파일에 필요하며 Runtime일 때 제거한다는 의미 -->
      <!-- scoop 태그를 삭제하면 default가 compile -->
      <!-- 롬복은 런타임 시에도 필요하므로 scope 태그 제거 -->
      <!-- <scope>provided</scope> -->
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.20.0</version>
    </dependency>
    
  </dependencies>

 

의존성이 잘 정의됐는지 Dependency Hierarchy로 계층 구조를 확인합니다.

 

Dependency Hierarchy

 

log4j-core 의존성을 추가하면 log4j-api는 자동으로 추가됩니다.

 

 

마지막으로 <build> 태그를 정의합니다.

<build> 태그는  eclipse의 기능을 확장시키는 <plugin> 태그를 사용하기 위함입니다.

만약 웹앱 프로젝트로 생성하였다면 war 플러그인도 추가합니다.

 

  <build>
	  
    <finalName>/</finalName>

    <plugins>
       <!-- 웹앱 프로젝트 추가 플러그인 -->
<!--  <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.4.0</version>
      </plugin> -->
      
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-eclipse-plugin</artifactId>
          <version>2.10</version>

          <configuration>
              <downloadSources>true</downloadSources>
              <!-- <downloadJavadocs> == 자바 공식문서 다운로드 결정 -->
              <downloadJavadocs>false</downloadJavadocs>
          </configuration>
      </plugin>

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.11.0</version>

          <configuration>
            <release>${java-version}</release>
          </configuration>
      </plugin>

    </plugins>

  </build>

</project>

 

 

pom.xml을 단 1글자라도 수정하면 Maven project를 무조건 업데이트해야 합니다.

Maven Project를 선택하고 상단 Project 메뉴에 "Update Maven Project"로 진행합니다.

단축키는 "Alt + F5"를 누르시면 됩니다.

 

 

 

 

 

'Spring boot > Maven' 카테고리의 다른 글

Maven Dependency List  (0) 2023.09.01
JUnit5  (0) 2023.08.23
JUnit4  (0) 2023.08.22
Maven dependency 추가하기  (0) 2023.08.21

+ Recent posts