private ๋ฉ”์„œ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ ํ• ๊นŒ?

2024. 1. 4. 15:10ยท ๐Ÿœ TESTING

Service์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์€๋ฐ public์œผ๋กœ ๋˜์–ด์žˆ๋Š” ์ „์ฒด ๋กœ์ง์ด ์•„๋‹Œ

private์œผ๋กœ ๋œ ๊ธฐ๋Šฅ์ด ๋‚˜๋ˆ„์–ด์ง„ ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋Šฅ๊ฒ€์ฆ์„ ํ•˜๊ณ  ์‹ถ๋‹ค.

 

๊ทธ๋ž˜์„œ public์œผ๋กœ ๋ณ€๊ฒฝํ•ด์„œ ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ–ˆ๋Š”๋ฐ

์ฐพ์•„๋ณด๋‹ˆ

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ServiceImpl ํด๋ž˜์Šค ๋‚ด์— ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋˜์ง€ ์•Š์€ public ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํ”ผํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํŠน์ • ๊ณ„์•ฝ(Contract)์„ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋“ค์€ ํ•ด๋‹น ๊ณ„์•ฝ์„ ์ง€์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋˜์ง€ ์•Š์€ ๋ฉ”์„œ๋“œ๋ฅผ ํด๋ž˜์Šค ๋‚ด์—์„œ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด, ์ฝ”๋“œ์˜ ์ผ๊ด€์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋ผ๊ณ  ํ•œ๋‹ค. ๋งž๋Š” ๋ง์ธ๋ฐ ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒŒ ์ข‹์„๊นŒ?

 

Reflection

๋ฆฌํ”Œ๋ ‰์…˜ ์ถ”์ฒœํ•˜๋Š” ๊ธ€์ด ๋งŽ์ด ๋ณด์—ฌ์„œ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋ฌธ์ œ๋Š”

private ๋ฉ”์„œ๋“œ๋Š” ๋‚ด๋ถ€๋ฅผ ๊ฐ์ถ”์–ด ํด๋ผ์ด์–ธํŠธ์™€์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถฐ์ฃผ๋Š”๋ฐ, ํด๋ผ์ด์–ธํŠธ์ธ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๊ฐ€ ๋‚ด๋ถ€ ๋ฉ”์„œ๋“œ๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋‹ˆ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Š” ์œ ์ง€๋ณด์ˆ˜ํ•  ๋•Œ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ์š”์ธ์ด ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ฉ”์„œ๋“œ ์ด๋ฆ„์ด๋‚˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋“ฑ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ์‹คํŒจํ•˜๊ฒŒ ๋œ๋‹ค. 

 

์ธ๋ฐ, ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ…Œ์ŠคํŠธ๋Š” public ๋ฉ”์„œ๋“œ์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” private ๋ฉ”์„œ๋“œ์˜ ๊ธฐ๋Šฅ๊ฒ€์ฆ ํ•˜๋Š” ๊ฑฐ์˜€๊ธฐ ๋•Œ๋ฌธ์—

๊ฒฐํ•ฉ๋„์™€ ๋ฌด๊ด€ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ํ…Œ์ŠคํŠธ๊ฐ€ ๊นจ์ง€๋Š” ๊ฑด ๋‹น์—ฐํ•˜๋‹ค๊ณ (๋ฏฟ์Œ์งํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ) ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ–ˆ๋‹ค.

 

์Šคํ”„๋ง์€ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ๋ง™๊ฒŒ๋„ ReflectionTestUtils๋ฅผ ์ œ๊ณตํ•ด ์ค€๋‹ค.

@ExtendWith(MockitoExtension.class)
class UserSErviceImplTest {
	
    @InjectMocks
    UserServiceImpl userService;
    
    @Test
    void filterSignUpOverMonths() {
  	
    // testDataList ์ƒ์„ฑ
    
    List<User> result = ReflectionTestUtils.invokeMethod(
    userService, "filterSignUpOverMonths", testDataList, 6);
    
    // ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ ๊ฒ€์ฆ
    
    }
}

 

์‹ค์ œ ๋ฉ”์„œ๋“œ ๋กœ์ง ํ…Œ์ŠคํŠธ๋ฅผ ๋ชฉ์ ์œผ๋กœ Mockito๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด Extend ํ•ด์„œ Service๋ฅผ ์ฃผ์ž…ํ–ˆ๋‹ค

๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด. invokeMethod ์ฒ˜์Œ ์ธ์ž๊ฐ’(target)์— UserServiceImpl.class ํ•˜๋ฉด ๋˜๋Š”๋ฐ ์™œ ๊ตณ์ด Mockito๊นŒ์ง€ ์‚ฌ์šฉํ–ˆ๋ƒ๋ฉดUserServiceImpl.class ์— ์žˆ๋Š” filterSignUpOverMonths ๋ฉ”์„œ๋“œ๊ฐ€ ์ •์ ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ์Šคํ„ด์Šคํ™”๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค.

(static ๋ฉ”์„œ๋“œ ๋ผ๋ฉด ์•ˆํ•ด๋„ ๋œ๋‹ค)

 

์‹ค์ œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ…Œ์ŠคํŠธํ•ด์„œ ๋ฟŒ๋“ฏ

 

๋„์›€ ๋ฐ›์€ ๊ณณ

https://mangkyu.tistory.com/235

๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿœ TESTING' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ์„œ๋น„์Šค ํ…Œ์ŠคํŠธํ•˜๊ธฐ  (0) 2023.06.28
์ดํŽ™ํ‹ฐ๋ธŒ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŒ… : ์‚ฌ๋ก€ ์ค‘์‹ฌ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ์‹ค์ „ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ  (0) 2023.04.21
'๐Ÿœ TESTING' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐ˜ํ™˜๊ฐ’์ด ์—†๋Š” ์„œ๋น„์Šค ํ…Œ์ŠคํŠธํ•˜๊ธฐ
  • ์ดํŽ™ํ‹ฐ๋ธŒ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŒ… : ์‚ฌ๋ก€ ์ค‘์‹ฌ์œผ๋กœ ๋ฐฐ์šฐ๋Š” ์‹ค์ „ ์†Œํ”„ํŠธ์›จ์–ด ํ…Œ์ŠคํŠธ ๊ฐ€์ด๋“œ
์• ์ •์“ฐ
์• ์ •์“ฐ
์• ์ •์“ฐ
์• ์ •์ฝ”๋”ฉ ๐Ÿ’ป
์• ์ •์“ฐ
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (93)
    • ๐Ÿง  MIND (0)
    • ๐Ÿ“ ํšŒ๊ณ  (5)
    • โš™๏ธ ๋ฐฐํฌ ๋ฐ ์ธํ”„๋ผ (2)
    • ๐Ÿ—‚๏ธ DataBase (1)
      • QUERY (1)
    • ๐Ÿ’ป Computer Science (12)
    • ๐ŸŒ WEB (62)
      • HTML,CSS (0)
      • Kotlien (1)
      • JAVA (20)
      • JavaScript (3)
      • Spring (16)
      • Thymeleaf (2)
      • Node.js (1)
      • React (2)
      • SETTING (3)
      • JPA (11)
    • ๐Ÿœ TESTING (3)
    • ๊ธฐํƒ€ (4)
    • ์—๋Ÿฌ๋ชจ์Œ (4)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ๋ฉ”์„œ๋“œํ…Œ์ŠคํŠธ
  • ์ž๋ฐ”
  • spring-boot
  • max_digest_length
  • ๊ธฐ์ดˆ
  • ๊ฐœ๋ฐœ์ž
  • Setting
  • Gson null
  • enum
  • ๋ฐฑ์ค€
  • XSSFWorkbook
  • 6์›”ํšŒ๊ณ 
  • QueryDSL
  • ํŒŒ์ด์ฌ
  • rdsํŒŒ๋ผ๋ฏธํ„ฐ
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • Til
  • ๋™์ ํ”„๋ก์‹œ
  • null์ œ์™ธ
  • JWT
  • Spring
  • Java
  • ์ฝ”ํ…Œ
  • ์ธํ„ฐ๋ทฐ
  • ๊ฐœ๋ฐœ์žํšŒ๊ณ 
  • ์ง๋ ฌํ™”
  • ํšŒ๊ณ 
  • ์„œ๋น„์Šคํ…Œ์ŠคํŠธ
  • ArgumentCaptor
  • JPA

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.v4.2.1
์• ์ •์“ฐ
private ๋ฉ”์„œ๋“œ๋Š” ์–ด๋–ป๊ฒŒ ํ…Œ์ŠคํŠธ ํ• ๊นŒ?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.