[ 최종수정일 - 2023_09_20 ]

 

 

pom.xml Dependency List

 

 

 Move to Maven Repository 


 

 

 

 

라이브러리 이름을 클릭하면 해당 라이브러리의 Maven Repository로 이동합니다.

 

  • log4j-slf4j-impl / log4j-core
    로깅 라이브러리


  • JUnit
    테스트 코드 라이브러리

  • Lombok
    어노테이션 라이브러리


  • javax.servlet-api / javax.servlet.jsp-api
    Servelt, JSP 표준대로 구현된 라이브러리, 구현체는 자동으로 추가

  • jstl
    jstl 문법 구현을 위한 라이브러리

  • Spring Security Core
    암호화 알고리즘 구현을 위한 라이브러리

  • Assertj-Core
    참조 변수의 값이 null인지 검증하는 라이브러리입니다.

 

 

 

 

# JSON serialize / de-serialize

  • Gson
    구글에서 제작한 JSON 변환 라이브러리입니다.

  • Genson
    변환 라이브러리입니다.

  • **Jackson**
    Spring에서 자주 사용되는 변환 라이브러리입니다.

  • JSON IO
    변환 라이브러리입니다.
    다른 변환 라이브러리와는 다르게 JSON IO는 자바 클래스를 반드시 CLASSPATH에 가지고 있어야 합니다.


 


 

 

# MyBatis

  • MyBatis
    아파치의 마이바티스 라이브러리

  • Log4jdbc Log4j2 JDBC4
    DriverSpy 설정을 위한 라이브러리(Optional)

  • Ojdbc8
    #Oracle JDBC Driver 참조

 

 


 

 

# Oracle JDBC Driver

  • OJdbc8
    오라클을 jdbc로 연결하기 위한 라이브러리, 필요에 따라 <dependency> 내에 Optional exclusions를 추가합니다.


Optional exclusions

더보기
  • simplefan
  • ons
  • rsi
  • ucp
  • xdb
  • xmlparserv2

 

 

 


 

 

 

 

 

 

 

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

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

 

 

 

Junit5 테스트 코드 작성 가이드입니다.

 

 


 

 

JUnit5는 POJO 기반으로 작성되며, 기본 생성자가 필요합니다.

 

 

 

JUnit5는 JUnit4와 다르게 어노테이션이 매우 다양합니다.

사용되는 어노테이션은 두 가지로 구분합니다.

 

 


 

 

타입 선언부 어노테이션

 

  • @TestInstance :
    각각의 단위 테스트 메서드를 수행할 때, 안전한 결과를 얻어내기 위해 테스트 클래스로부터
    테스트 객체를 어떠한 기준으로 생성할 지 결정하는 어노테이션입니다.
    해당 어노테이션의 속성은 'PER_CLASS'와 'PER_METHOD'가 이며 defualt는 'PER_CLASS'입니다.

    - PER_METHOD(기본값) : 단위 테스트 메서드마다 테스트 객체 생성 후 테스트 메서드를 수행합니다.

    - PER_CLASS : 하나의 테스트 객체만 생성 후, 모든 단위 테스트 메서드를 수행합니다.

    다만 PER_METHOD는 메모리에 부담을 주기 때문에 개발환경을 고려하여 설정해야 합니다.

  • @TestMethodOrder :
    모든 단위 테스트 메서드의 실행순서의 기준과 방법을 설정합니다.
    다양한 속성이 있지만, 주로 OrderAnnotation(@Order, 서수)을 사용합니다.

 

테스트 클래스 블록 어노테이션

 

전처리 어노테이션

 

  • @BeforeAll :
    단위 테스트 메서드 수행 시, 오직 한 번만 수행되는 전처리입니다.

  • @BeforeEach :
    단위 테스트 메서드 수행 시 매번 수행되는 전처리입니다.(JUnit4의 @Before와 동일)

  • @AfterAll :
    단위 테스트 메서드 수행 시, 오직 한 번만 수행되는 후처리입니다.

  • @AfterEach :
    단위 테스트 메서드 수행 시 매번 수행되는 후처리입니다.(JUnit4의 @Before와 동일)

 

 

 

 

후처리 어노테이션

 

  • @Disabled :
    단위테스트 메서드를 제외시킵니다.

  • @Tag :
    단위 테스트의 성격(fast,normal, slow)을 표시합니다.

  • @Test :
    메서드가 단위 테스트용임을 표시합니다.

  • @Order :
    단위 테스트 메서드의 수행 순서를 결정합니다.

  • @DisplayName :
    테스트 도구에 표시되는 단위 테스트의 이름입니다.
    JUnit View에서 해당 어노테이션으로 설정한 이름으로 보여줍니다.

  • @Timeout :
    JUnit4에서는 @Test의 속성이었습니다.
    하지만, JUnit5에서는 다양한 시간 단위로 테스트의 임계 소요 시간을 정의할 수 있도록 분리하여 사용합니다.
    속성으로 value와 unit이 있습니다.

    예를 들어, 0.5초 안에 테스트를 종료해야 한다면 다음과 같이 코드를 작성할 수 있습니다.
    @Timeout(value = 500L, unit = TimeUnit.MILLISECONDS)

 

 


 

 

 

다음은 간단한 JUnit5 테스트 코드 작성법입니다.

@Log4j2
@NoArgsConstructor

// 1. 타입 선언부에 적용해야할 JUnit Jupyter Annotations입니다.
@TestInstance(Lifecycle.PER_CLASS)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class JUnitJupiterTemplateTests {
	
	
    @BeforeAll
    void beforeAll() { // 1회성 전처리
        log.trace("beforeAll() invoked.");
        
        // TODO here.
    } // beforeAll
	
    @BeforeEach
    void beforeEach() { // 매번 수행되는 전처리
        log.trace("beforeEach() invoked.");
        
        // TODO here.
    } // beforeEach
	
    @AfterAll
    void afterAll() { // 1회성 후처리
        log.trace("afterAll() invoked.");
        
        // TODO here.
    } // afterAll
	
    @AfterEach
    void afterEach() { // 매번 수행되는 후처리
        log.trace("afterEach() invoked.");
        
        // TODO here.
    } // afterEach
	
    // ------------------------------------------------
	
    @Disabled
    @Tag("fast")
    @Test
    @Order(1)
    @DisplayName("contextLoads")
    @Timeout(value = 500L, unit = TimeUnit.MILLISECONDS)
    void contextLoads() { // 단위 테스트 메서드
        log.trace("contextLoads() invoked.");
    } // contextLoads
	
} // end class

 

 

 

 

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

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

 

 

 

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