[02]스프링부트 퀵스타트 - 라이브러리 작성하기


지난 포스트에서는 Maven 을 통해서 기본적인 메이븐 자바 프로젝트를 생성했습니다. 이 프로젝트를 기반으로 라이브러리 프로젝트 작성하는 방법에 대해서 설명하겠습니다. 여기서 작성한 라이브러리는 이후 스프링 부트 프로젝트에서 사용합니다.

이 포스트의 목표

  • 라이브러리 프로젝트 구성 확인
  • 메이븐 테스트 실행

이 포스트에서는 기존 자바 프로젝트에서 Main 함수를 없앱니다. Main 함수를 대신하여 테스트 코드로 라이브러리 코드를 실행합니다. 작성된 라이브러리는 jar 파일로 배포하여 다른 프로젝트에서 활용가능합니다.

이 포스트를 시작하기 전에

이 포스트는 다음의 부분에 대한 설명을 하지 않습니다.

  • Java 설치
  • maven 설치

지난 포스트에서 생성한 프로젝트를 기반으로 설명합니다.

구현하려는 것

  • 작성자(String)과 국가코드(alpha2)를 받아 작성자가 글을 작성했다는 문구를 출력합니다.

알파코드는 KR 와 US 만 받고 나머지는 US와 동일하게 처리합니다.

PostDescribe class 생성

package co.storyg.post.common;

/**
 * PostDescribe
 */
public class PostDescribe {

  public String byAuthor(String author,String alpa2Code) {
  
    switch (alpa2Code) {
      case "KR":
        return "이 글은 "+author+"에 의해 작성되었습니다.";
      case "US":
      default:
        return "This post writed by "+author;
    }
  }
}

테스트 코드 작성

package co.storyg.post.common;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class PostDescribeTest 
{

    @Test
    public void shouldAnswerWithTrue()
    {
        PostDescribe postDescribe = new PostDescribe();
        String ret = postDescribe.byAuthor("author1", "KR");
        assertEquals("이 글은 author1에 의해 작성되었습니다.", ret);
        ret = postDescribe.byAuthor("author2", "US");
        assertEquals("This post writed by author2", ret);
        ret = postDescribe.byAuthor("author3", "UNKNOWN");
        assertEquals("This post writed by author3", ret);
        
        
    }
}

메이븐 테스트 실행

./mvnw test
...
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running **.PostDescribeTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.014 s - in **.PostDescribeTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.213 s
[INFO] Finished at: 2020-03-01T22:12:01+09:00
[INFO] ------------------------------------------------------------------------