[02]스프링부트 퀵스타트 - 라이브러리 작성하기
01 Mar 2020
지난 포스트에서는 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] ------------------------------------------------------------------------