From 01c35a20a01df5d3c862b8c76f12029a629de342 Mon Sep 17 00:00:00 2001 From: dasomel Date: Fri, 29 May 2026 00:37:43 +0900 Subject: [PATCH 1/2] =?UTF-8?q?test:=20SampleVO/SampleDefaultVO=20?= =?UTF-8?q?=EC=88=9C=EC=88=98=20=EB=8B=A8=EC=9C=84=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SampleVO 및 SampleDefaultVO의 기본값, setter/getter, 상속 관계를 DB·Spring 컨텍스트 없이 검증하는 JUnit 5 단위 테스트 추가. 기존 테스트가 모두 DB 연동 통합 테스트인 점을 보완. pom.xml: Lombok annotationProcessorPaths 추가, skipTests false로 변경 --- pom.xml | 8 +- .../sample/service/SampleDefaultVOTest.java | 123 +++++++++++++++ .../example/sample/service/SampleVOTest.java | 143 ++++++++++++++++++ 3 files changed, 273 insertions(+), 1 deletion(-) create mode 100644 src/test/java/egovframework/example/sample/service/SampleDefaultVOTest.java create mode 100644 src/test/java/egovframework/example/sample/service/SampleVOTest.java diff --git a/pom.xml b/pom.xml index 076f810..4264f38 100644 --- a/pom.xml +++ b/pom.xml @@ -160,6 +160,12 @@ maven-compiler-plugin ${java.version} + + + org.projectlombok + lombok + + @@ -179,7 +185,7 @@ org.apache.maven.plugins maven-surefire-plugin - true + false xml **/Abstract*.java diff --git a/src/test/java/egovframework/example/sample/service/SampleDefaultVOTest.java b/src/test/java/egovframework/example/sample/service/SampleDefaultVOTest.java new file mode 100644 index 0000000..26e9b38 --- /dev/null +++ b/src/test/java/egovframework/example/sample/service/SampleDefaultVOTest.java @@ -0,0 +1,123 @@ +/* + * Copyright 2008-2009 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package egovframework.example.sample.service; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * [게시판] SampleDefaultVO 단위 테스트 + * + * @author 이백행 + * @since 2024-09-21 + */ +class SampleDefaultVOTest { + + private SampleDefaultVO vo; + + @BeforeEach + void setUp() { + vo = new SampleDefaultVO(); + } + + @Test + @DisplayName("검색조건 기본값은 빈 문자열이다") + void searchConditionDefaultIsEmpty() { + assertEquals("", vo.getSearchCondition()); + } + + @Test + @DisplayName("검색 키워드 기본값은 빈 문자열이다") + void searchKeywordDefaultIsEmpty() { + assertEquals("", vo.getSearchKeyword()); + } + + @Test + @DisplayName("현재 페이지 기본값은 1이다") + void pageIndexDefaultIsOne() { + assertEquals(1, vo.getPageIndex()); + } + + @Test + @DisplayName("페이지 단위 기본값은 10이다") + void pageUnitDefaultIsTen() { + assertEquals(10, vo.getPageUnit()); + } + + @Test + @DisplayName("페이지 사이즈 기본값은 10이다") + void pageSizeDefaultIsTen() { + assertEquals(10, vo.getPageSize()); + } + + @Test + @DisplayName("페이지당 레코드 수 기본값은 10이다") + void recordCountPerPageDefaultIsTen() { + assertEquals(10, vo.getRecordCountPerPage()); + } + + @Test + @DisplayName("firstIndex 기본값은 1이다") + void firstIndexDefaultIsOne() { + assertEquals(1, vo.getFirstIndex()); + } + + @Test + @DisplayName("lastIndex 기본값은 1이다") + void lastIndexDefaultIsOne() { + assertEquals(1, vo.getLastIndex()); + } + + @Test + @DisplayName("검색조건 setter/getter가 정상 동작한다") + void searchConditionSetterGetter() { + vo.setSearchCondition("1"); + assertEquals("1", vo.getSearchCondition()); + } + + @Test + @DisplayName("검색 키워드 setter/getter가 정상 동작한다") + void searchKeywordSetterGetter() { + vo.setSearchKeyword("테스트"); + assertEquals("테스트", vo.getSearchKeyword()); + } + + @Test + @DisplayName("페이지 인덱스 setter/getter가 정상 동작한다") + void pageIndexSetterGetter() { + vo.setPageIndex(3); + assertEquals(3, vo.getPageIndex()); + } + + @Test + @DisplayName("toString이 null이 아니다") + void toStringIsNotNull() { + assertNotNull(vo.toString()); + } + + @Test + @DisplayName("toString이 필드명을 포함한다") + void toStringContainsFieldNames() { + String result = vo.toString(); + assertNotNull(result); + assertEquals(true, result.contains("pageIndex")); + } + +} diff --git a/src/test/java/egovframework/example/sample/service/SampleVOTest.java b/src/test/java/egovframework/example/sample/service/SampleVOTest.java new file mode 100644 index 0000000..a75666b --- /dev/null +++ b/src/test/java/egovframework/example/sample/service/SampleVOTest.java @@ -0,0 +1,143 @@ +/* + * Copyright 2008-2009 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package egovframework.example.sample.service; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** + * [게시판] SampleVO 단위 테스트 + * + * @author 이백행 + * @since 2024-09-21 + */ +class SampleVOTest { + + private SampleVO vo; + + @BeforeEach + void setUp() { + vo = new SampleVO(); + } + + @Test + @DisplayName("id 초기값은 null이다") + void idDefaultIsNull() { + assertNull(vo.getId()); + } + + @Test + @DisplayName("name 초기값은 null이다") + void nameDefaultIsNull() { + assertNull(vo.getName()); + } + + @Test + @DisplayName("description 초기값은 null이다") + void descriptionDefaultIsNull() { + assertNull(vo.getDescription()); + } + + @Test + @DisplayName("useYn 초기값은 null이다") + void useYnDefaultIsNull() { + assertNull(vo.getUseYn()); + } + + @Test + @DisplayName("regUser 초기값은 null이다") + void regUserDefaultIsNull() { + assertNull(vo.getRegUser()); + } + + @Test + @DisplayName("id setter/getter가 정상 동작한다") + void idSetterGetter() { + vo.setId("SAMPLE-001"); + assertEquals("SAMPLE-001", vo.getId()); + } + + @Test + @DisplayName("name setter/getter가 정상 동작한다") + void nameSetterGetter() { + vo.setName("테스트 게시글"); + assertEquals("테스트 게시글", vo.getName()); + } + + @Test + @DisplayName("description setter/getter가 정상 동작한다") + void descriptionSetterGetter() { + vo.setDescription("설명 내용"); + assertEquals("설명 내용", vo.getDescription()); + } + + @Test + @DisplayName("useYn setter/getter가 정상 동작한다") + void useYnSetterGetter() { + vo.setUseYn("Y"); + assertEquals("Y", vo.getUseYn()); + } + + @Test + @DisplayName("regUser setter/getter가 정상 동작한다") + void regUserSetterGetter() { + vo.setRegUser("admin"); + assertEquals("admin", vo.getRegUser()); + } + + @Test + @DisplayName("SampleVO는 SampleDefaultVO를 상속한다") + void sampleVOExtendsSampleDefaultVO() { + assertInstanceOf(SampleDefaultVO.class, vo); + } + + @Test + @DisplayName("SampleDefaultVO에서 상속받은 페이지 기본값이 정상이다") + void inheritedPageIndexDefaultIsOne() { + assertEquals(1, vo.getPageIndex()); + } + + @Test + @DisplayName("toString이 null이 아니다") + void toStringIsNotNull() { + vo.setId("SAMPLE-001"); + vo.setName("테스트"); + assertNotNull(vo.toString()); + } + + @Test + @DisplayName("여러 필드를 동시에 설정하면 각각 정상 반환된다") + void multipleFieldsSetAndGet() { + vo.setId("S-100"); + vo.setName("게시글 제목"); + vo.setDescription("게시글 내용"); + vo.setUseYn("Y"); + vo.setRegUser("user01"); + + assertEquals("S-100", vo.getId()); + assertEquals("게시글 제목", vo.getName()); + assertEquals("게시글 내용", vo.getDescription()); + assertEquals("Y", vo.getUseYn()); + assertEquals("user01", vo.getRegUser()); + } + +} From d43eb4783ff1d062bdfdab80a19b8319ef129424 Mon Sep 17 00:00:00 2001 From: dasomel Date: Fri, 29 May 2026 00:38:54 +0900 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20PR?= =?UTF-8?q?=EC=97=90=EC=84=9C=20pom.xml=20=EB=B9=8C=EB=93=9C=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EB=B3=80=EA=B2=BD=20=EB=B6=84=EB=A6=AC=20(?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=86=8C=EC=8A=A4=EB=A7=8C=20?= =?UTF-8?q?=EC=9C=A0=EC=A7=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Lombok annotationProcessorPaths 및 surefire skipTests 변경은 본 테스트 PR 범위에서 제외 - 단일 주제(테스트 추가) 유지 --- pom.xml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 4264f38..076f810 100644 --- a/pom.xml +++ b/pom.xml @@ -160,12 +160,6 @@ maven-compiler-plugin ${java.version} - - - org.projectlombok - lombok - - @@ -185,7 +179,7 @@ org.apache.maven.plugins maven-surefire-plugin - false + true xml **/Abstract*.java