Skip to content

Commit f0d3a0f

Browse files
authored
[Fix]Test 코드 수정 (#25)
1 parent 3e3535b commit f0d3a0f

File tree

7 files changed

+203
-132
lines changed

7 files changed

+203
-132
lines changed

src/test/java/com/example/Jinus/service/cafeteria/CafeteriaServiceV2Test.java

Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import org.junit.jupiter.api.DisplayName;
99
import org.junit.jupiter.api.Test;
1010
import org.junit.jupiter.api.extension.ExtendWith;
11+
import org.mockito.InjectMocks;
12+
import org.mockito.Mock;
1113
import org.mockito.Mockito;
1214
import org.mockito.junit.jupiter.MockitoExtension;
1315
import org.springframework.beans.factory.annotation.Autowired;
@@ -25,16 +27,11 @@
2527
import static org.springframework.test.web.client.ExpectedCount.times;
2628

2729
@ExtendWith(MockitoExtension.class)
28-
@SpringBootTest
2930
public class CafeteriaServiceV2Test {
3031

31-
@Autowired
32-
private CafeteriaServiceV2 cafeteriaServiceV2;
33-
@Autowired
34-
private RedisTemplate redisTemplate;
35-
@Autowired
32+
@InjectMocks
3633
private CacheServiceV2 cacheServiceV2;
37-
@MockBean
34+
@Mock
3835
private CafeteriaRepositoryV2 cafeteriaRepositoryV2;
3936

4037
@Test
@@ -54,40 +51,4 @@ public void checkUserCafeteriaList() {
5451
// then
5552
assertThat(result).usingRecursiveComparison().isEqualTo(resultList);
5653
}
57-
58-
// @Test
59-
// @DisplayName("campusId, cafeteriaName을 키값으로 캐싱하여 cafeteriaId 값을 찾는다.")
60-
// public void checkCacheData() {
61-
// // given
62-
// int campusId = 1;
63-
// String cafeteriaName = "교직원식당";
64-
// int expectedCafeteriaId = 4;
65-
// String expectedCacheKey = "cafeteridId::" + campusId + "::" + cafeteriaName; // 캐싱 키 예상값
66-
//
67-
// // Mock 설정: DB 조회 시 특정 값 반환하도록 설정
68-
// Mockito.when(cafeteriaRepositoryV2.findCafeteriaId(cafeteriaName, campusId)).thenReturn(Optional.of(expectedCafeteriaId));
69-
//
70-
// // when: 첫 번째 호출 (DB 조회 발생 후 Redis에 캐싱됨)
71-
// int cafeteriaId = cafeteriaServiceV2.getCafeteriaId(cafeteriaName, campusId);
72-
//
73-
// // then: DB에서 가져온 값이 기대한 값과 같은지 확인
74-
// assertThat(cafeteriaId).isEqualTo(expectedCafeteriaId);
75-
//
76-
// // Redis에서 직접 키 조회하여 확인
77-
// ValueOperations<String, String> valueOps = redisTemplate.opsForValue();
78-
// String cachedValue = valueOps.get(expectedCacheKey);
79-
//
80-
// assertThat(cachedValue).isNotNull(); // 캐시가 존재해야 함
81-
// assertThat(Integer.parseInt(cachedValue)).isEqualTo(expectedCafeteriaId); // 저장된 값이 예상한 값과 같은지 확인
82-
//
83-
// // 캐시가 적용되었는지 검증: 두 번째 호출에서는 DB 조회가 발생하면 안 됨
84-
// int cachedCafeteriaId = cafeteriaServiceV2.getCafeteriaId(cafeteriaName, campusId);
85-
//
86-
// // 두 번째 호출은 캐시에서 가져와야 하므로 DB 호출이 한 번만 발생해야 함
87-
// verify(cafeteriaRepositoryV2, Mockito.times(1)).findCafeteriaId(cafeteriaName, campusId);
88-
//
89-
// // 캐시된 값과 두 번째 조회한 값이 같은지 확인
90-
// assertThat(cachedCafeteriaId).isEqualTo(expectedCafeteriaId);
91-
//
92-
// }
9354
}

src/test/java/com/example/Jinus/service/cafeteria/CampusServiceV2Test.java

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,26 @@
22

33
import com.example.Jinus.entity.cafeteria.CampusEntity;
44
import com.example.Jinus.repository.v2.cafeteria.CampusRepositoryV2;
5-
import com.example.Jinus.repository.v2.userInfo.UserRepositoryV2;
65
import com.example.Jinus.service.v2.cafeteria.CampusServiceV2;
7-
import com.example.Jinus.service.v2.userInfo.UserServiceV2;
86
import org.junit.jupiter.api.DisplayName;
97
import org.junit.jupiter.api.Test;
108
import org.junit.jupiter.api.extension.ExtendWith;
9+
import org.mockito.InjectMocks;
10+
import org.mockito.Mock;
1111
import org.mockito.Mockito;
1212
import org.mockito.junit.jupiter.MockitoExtension;
13-
import org.springframework.beans.factory.annotation.Autowired;
14-
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
15-
import org.springframework.boot.test.context.SpringBootTest;
16-
import org.springframework.boot.test.mock.mockito.MockBean;
17-
import org.springframework.test.context.ActiveProfiles;
1813

1914
import java.util.ArrayList;
2015
import java.util.List;
21-
import java.util.Optional;
2216

2317
import static org.assertj.core.api.Assertions.assertThat;
2418

2519
@ExtendWith(MockitoExtension.class)
26-
@SpringBootTest
2720
public class CampusServiceV2Test {
2821

29-
@Autowired
22+
@InjectMocks
3023
private CampusServiceV2 campusServiceV2;
31-
@MockBean
24+
@Mock
3225
private CampusRepositoryV2 campusRepositoryV2;
3326

3427
@Test
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.example.Jinus.service.notice;
2+
3+
import com.example.Jinus.entity.notice.NoticeCategoryEntity;
4+
import com.example.Jinus.repository.v2.notice.CategoryRepositoryV2;
5+
import com.example.Jinus.service.v2.notice.CategoryServiceV2;
6+
import org.junit.jupiter.api.DisplayName;
7+
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.api.extension.ExtendWith;
9+
import org.mockito.InjectMocks;
10+
import org.mockito.Mock;
11+
import org.mockito.junit.jupiter.MockitoExtension;
12+
13+
import java.util.List;
14+
15+
import static org.junit.jupiter.api.Assertions.assertEquals;
16+
import static org.mockito.Mockito.*;
17+
18+
19+
@ExtendWith(MockitoExtension.class)
20+
public class CategoryServiceV2Test {
21+
22+
@Mock
23+
private CategoryRepositoryV2 noticeCategoryRepository;
24+
@InjectMocks
25+
private CategoryServiceV2 categoryService;
26+
27+
@Test
28+
@DisplayName("사용자 학과id와 일치하는 카테고리 찾기")
29+
void checkGetCategoryEntityTest() {
30+
// Given - 테스트 데이터 생성
31+
int departmentId = 1;
32+
List<NoticeCategoryEntity> expectedCategories = List.of(
33+
new NoticeCategoryEntity(1, 1, "공지사항", 0, 0, 0, null),
34+
new NoticeCategoryEntity(2, 1, "학사일정", 0, 0, 0, null)
35+
);
36+
37+
// Mocking - 목 객체의 동작 정의
38+
when(noticeCategoryRepository.findCategoryListByDepartmentId(departmentId))
39+
.thenReturn(expectedCategories);
40+
41+
// When - 서비스 호출
42+
List<NoticeCategoryEntity> result = categoryService.getCategoryEntity(departmentId);
43+
44+
// Then - 결과 검증
45+
assertEquals(expectedCategories.size(), result.size()); // 2개의 카테고리 반환해야 함
46+
assertEquals(expectedCategories, result);
47+
// 서비스 메소드 중복 호출 방지를 위한 호출 횟수 확인
48+
verify(noticeCategoryRepository, times(1))
49+
.findCategoryListByDepartmentId(departmentId);
50+
}
51+
}

src/test/java/com/example/Jinus/service/notice/NoticeCategoryServiceV2Test.java

Lines changed: 0 additions & 40 deletions
This file was deleted.
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
package com.example.Jinus.service.notice;
2+
3+
import com.example.Jinus.dto.response.ListItemDto;
4+
import com.example.Jinus.entity.notice.NoticeCategoryEntity;
5+
import com.example.Jinus.entity.notice.NoticeEntity;
6+
import com.example.Jinus.repository.v2.notice.NoticeRepositoryV2;
7+
import com.example.Jinus.service.v2.notice.CategoryServiceV2;
8+
import com.example.Jinus.service.v2.notice.NoticeServiceV2;
9+
import org.junit.jupiter.api.BeforeEach;
10+
import org.junit.jupiter.api.DisplayName;
11+
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.api.extension.ExtendWith;
13+
import org.mockito.InjectMocks;
14+
import org.mockito.Mock;
15+
import org.mockito.junit.jupiter.MockitoExtension;
16+
17+
import java.util.ArrayList;
18+
import java.util.List;
19+
20+
import static org.junit.jupiter.api.Assertions.*;
21+
import static org.mockito.Mockito.*;
22+
23+
@ExtendWith(MockitoExtension.class)
24+
public class NoticeServiceV2Test {
25+
26+
@InjectMocks
27+
private NoticeServiceV2 noticeServiceV2;
28+
@Mock
29+
private CategoryServiceV2 categoryServiceV2;
30+
@Mock
31+
private NoticeRepositoryV2 noticeRepositoryV2;
32+
33+
private List<NoticeCategoryEntity> mockCategoryEntities;
34+
private List<NoticeEntity> mockNoticeEntities;
35+
36+
@BeforeEach
37+
void setUp() {
38+
// 공지 카테고리 엔티티 Mock 데이터 생성
39+
mockCategoryEntities = new ArrayList<>();
40+
NoticeCategoryEntity category = new NoticeCategoryEntity();
41+
category.setId(1);
42+
category.setMi(123);
43+
category.setBbsId(456);
44+
category.setCategory("학과공지");
45+
mockCategoryEntities.add(category);
46+
47+
// 공지 엔티티 Mock 데이터 생성
48+
mockNoticeEntities = new ArrayList<>();
49+
NoticeEntity notice = new NoticeEntity();
50+
notice.setTitle("시험 일정 공지");
51+
notice.setCreatedAt("2025-03-24");
52+
notice.setNttSn(1001);
53+
mockNoticeEntities.add(notice);
54+
}
55+
56+
@Test
57+
@DisplayName("학과정보 존재하는 경우 공지리스트 반환")
58+
void checkExistUserReturnNotice() {
59+
// given
60+
String departmentEng = "computer";
61+
int departmentId = 1;
62+
63+
when(categoryServiceV2.getCategoryEntity(departmentId)).thenReturn(mockCategoryEntities);
64+
when(noticeRepositoryV2.findNoticeListByCategoryId(1)).thenReturn(mockNoticeEntities);
65+
66+
// when
67+
String result = noticeServiceV2.existUserReturnNotice(departmentEng, departmentId);
68+
69+
// then
70+
assertNotNull(result);
71+
assertTrue(result.contains("학과공지")); // JSON 결과에 "학과공지" 포함 확인
72+
verify(categoryServiceV2, times(1)).getCategoryEntity(departmentId);
73+
}
74+
75+
@Test
76+
@DisplayName("공지가 존재하지 않는 경우")
77+
void checkThereIsNoNoticeData() {
78+
// given
79+
String departmentEng = "computer";
80+
int departmentId = 1;
81+
82+
when(categoryServiceV2.getCategoryEntity(departmentId)).thenReturn(new ArrayList<>());
83+
84+
// when
85+
String result = noticeServiceV2.existUserReturnNotice(departmentEng, departmentId);
86+
87+
// then
88+
assertNotNull(result);
89+
assertTrue(result.contains("최근에 등록된 공지사항이 없어!"));
90+
}
91+
92+
@Test
93+
@DisplayName("학과 정보가 없어서 학과 등록 블록 반환")
94+
void checkDoesNotExistUserReturnBlock() {
95+
// when
96+
String result = noticeServiceV2.doesNotExistUserReturnBlock();
97+
98+
// then
99+
assertNotNull(result);
100+
assertTrue(result.contains("학과 등록"));
101+
assertTrue(result.contains("66cf0c8ae5715f75b254dfea")); // 블록 ID 포함 여부 확인
102+
}
103+
104+
@Test
105+
@DisplayName("공지 가져오기")
106+
void checkGetNoticeList() {
107+
// given
108+
int categoryId = 1;
109+
String departmentEng = "computer";
110+
String mi = "123";
111+
String bbsId = "456";
112+
113+
when(noticeRepositoryV2.findNoticeListByCategoryId(categoryId)).thenReturn(mockNoticeEntities);
114+
115+
// when
116+
List<ListItemDto> result = noticeServiceV2.getNoticeList(categoryId, mi, bbsId, departmentEng);
117+
118+
// then
119+
assertNotNull(result);
120+
assertEquals(1, result.size());
121+
assertEquals("시험 일정 공지", result.getFirst().getTitle());
122+
}
123+
124+
@Test
125+
@DisplayName("url 생성 테스트")
126+
void checkNoticeDetailUrl() {
127+
// given
128+
String departmentEng = "computer";
129+
String mi = "123";
130+
String bbsId = "456";
131+
int nttSn = 1001;
132+
133+
// when
134+
String url = noticeServiceV2.noticeDetailUrl(departmentEng, mi, bbsId, nttSn);
135+
136+
// then
137+
assertEquals("https://www.gnu.ac.kr/computer/na/ntt/selectNttInfo.do?mi=123&bbsId=456&nttSn=1001", url);
138+
}
139+
}

src/test/java/com/example/Jinus/service/userInfo/DepartmentServiceV2Test.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,18 @@
55
import org.junit.jupiter.api.DisplayName;
66
import org.junit.jupiter.api.Test;
77
import org.junit.jupiter.api.extension.ExtendWith;
8+
import org.mockito.InjectMocks;
9+
import org.mockito.Mock;
810
import org.mockito.Mockito;
911
import org.mockito.junit.jupiter.MockitoExtension;
10-
import org.springframework.beans.factory.annotation.Autowired;
11-
import org.springframework.boot.test.context.SpringBootTest;
12-
import org.springframework.boot.test.mock.mockito.MockBean;
1312

1413
import static org.assertj.core.api.Assertions.assertThat;
1514

1615
@ExtendWith(MockitoExtension.class)
17-
@SpringBootTest
1816
public class DepartmentServiceV2Test {
19-
@Autowired
17+
@InjectMocks
2018
private DepartmentServiceV2 departmentServiceV2;
21-
@MockBean
19+
@Mock
2220
private DepartmentRepositoryV2 departmentRepositoryV2;
2321

2422
@Test

0 commit comments

Comments
 (0)