๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring

[Spring/์Šคํ”„๋ง] JUnit์„ ์ด์šฉํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ, @Test

by LasBe 2022. 5. 3.
๋ฐ˜์‘ํ˜•

๐Ÿ“„ ๊ด€๋ จ ๊ธ€


 

 

 

โšก๏ธ๋‹จ์œ„ ํ…Œ์ŠคํŠธ


๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ž€ ์†Œ์Šค ์ฝ”๋“œ์˜ ๋…๋ฆฝ๋œ ํŠน์ • ๋ชจ๋“ˆ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

 

ํ”„๋กœ์ ํŠธ์—์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ ์ฟผ๋ฆฌ์— ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ•˜๋‚˜ํ•˜๋‚˜ ์›น์„œ๋ฒ„๋ฅผ ์ผœ์„œ ์ง์ ‘ ํ™•์ธํ•˜๋Š” ๊ฑด๋„ˆ๋ฌด ์†Œ์š”๊ฐ€ ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ•ด

๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋„์ž…ํ•ด๋ดค๋Š”๋ฐ ์ƒ๊ฐ ์ด์ƒ์œผ๋กœ ๋„ˆ๋ฌด ํŽธ๋ฆฌํ•˜๊ณ  ํšจ์œจ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํŠนํžˆ ์Šคํ”„๋ง์—์„œ๋Š” ์ด๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์ด ์ž˜ ๊ฐ–์ถฐ์ ธ ์žˆ์–ด ํฐ ์–ด๋ ค์›€ ์—†์ด ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ [์ดํด๋ฆฝ์Šค + ํ†ฐ์บฃ + Spring MVC + Maven + JUnit] ํ™˜๊ฒฝ์—์„œ์˜ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค

 

 

 

โšก๏ธ์Šคํ”„๋ง + JUnit


๐Ÿ“Œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.11</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-test</artifactId>
    <version>${spring.version}</version>
</dependency>

pom.xml์— JUnit 4๋ฒ„์ „ ์ด์ƒ๊ณผ ๋ณธ์ธ์˜ ์Šคํ”„๋ง ๋ฒ„์ „์— ๋งž๋Š” spring-test๋ฅผ ์„ธํŒ…ํ•ด์ค๋‹ˆ๋‹ค.

 


๐Ÿ“Œ ํ…Œ์ŠคํŠธ ํŒŒ์ผ ์ƒ์„ฑ

๐Ÿ”Ž ํŒจํ‚ค์ง€ ์ƒ์„ฑ

์Šคํ”„๋ง์€ ์œ„์™€ ๊ฐ™์ด ์ง์ ‘์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ๋™์— ํ•„์š”ํ•œ ํŒŒ์ผ์€ src/mainjavaํด๋”,

ํ…Œ์ŠคํŠธํ•  ํŒŒ์ผ์€ src/test/java ํด๋”์— ์œ„์น˜ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์€ ๋ชจ๋“ˆ์ด ์žˆ๋‹ค๋ฉด ๊ทธ ํŒŒ์ผ์˜ ํŒจํ‚ค์ง€ ์ด๋ฆ„๊ณผ ๋˜‘๊ฐ™์ด ํ…Œ์ŠคํŠธ ํด๋”์— ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค.

 


๐Ÿ”Ž ํŒŒ์ผ ์ƒ์„ฑ

ํŒจํ‚ค์ง€๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๋ฉด ํŒจํ‚ค์ง€ ์šฐํด๋ฆญ -> new -> other 

JUnit Test Case๋ฅผ ๊ฒ€์ƒ‰ํ•ด์ฃผ๊ณ  next๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

 

 

New JUnit 4 test๋ฅผ ์„ ํƒํ•˜๊ณ 

Name์—๋Š” ์ƒ์„ฑํ•  ํ…Œ์ŠคํŠธ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ ์–ด์ค๋‹ˆ๋‹ค.

 

๊ทธ ๋‹ค์Œ ํ…Œ์ŠคํŠธ ๋‹นํ•  ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ธฐ ์œ„ํ•ด Class under test ๋ถ€๋ถ„์„ ํด๋ฆญํ•ด์ค๋‹ˆ๋‹ค.

 

 

์ €๋Š” ์ฐฝ์„ ์ฒ˜์Œ ๋„์šธ ๋•Œ ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ๋– ์„œ ๋‹นํ™ฉํ–ˆ์ง€๋งŒ

๊ฒ€์ƒ‰์ฐฝ์— ํŒŒ์ผ ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•˜๋ฉด ๋ชฉ๋ก์ด ์ฃผ๋ฅด๋ฅต ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

 

MemberService๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๊ธฐ์œ„ํ•ด ์„ ํƒํ•ด์ฃผ๊ณ  OK๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

์—ฌ๊ธฐ๊นŒ์ง€ ์˜ค์…จ์œผ๋ฉด ์ด๋Ÿฌํ•œ ๋ชจ์Šต์ผํ…๋ฐ์š”

์ด์ œ Next๋ฅผ ํด๋ฆญํ•ด์„œ ๋‹ค์Œ ์ฐฝ์œผ๋กœ ๋„˜์–ด๊ฐ€์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

 

์—ฌ๊ธฐ์„œ๋Š” ๋ณธ์ธ์ด ํ…Œ์ŠคํŠธ๋ฅผ ์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ํƒํ•ด ๋” ํŽธ๋ฆฌํ•œ ์ดˆ๊ธฐ์„ธํŒ…์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ค๋‹ˆ๋‹ค.

 

์›ํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์„ ํƒํ–ˆ์œผ๋ฉด Finish๋ฅผ ๋ˆŒ๋Ÿฌ ํŒŒ์ผ ์ƒ์„ฑ์„ ๋งˆ๋ฌด๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 


๐Ÿ”Ž ํ…Œ์ŠคํŠธ ํŒŒ์ผ ๊ตฌ์„ฑ

์ œ๊ฐ€ ๊ฐ„๋‹จํžˆ ์ง„ํ–‰ํ•ด๋ณธ ํ…Œ์ŠคํŠธ์˜ ์†Œ์Šค ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

 

๊ฐ ์–ด๋…ธํ…Œ์ด์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

1) @RunWith(SpringJUnit4ClassRunner.class) : ์ปจํ…Œ์ด๋„ˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉํ•  ๋นˆ์„ ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.

2) @ContextConfiguration(locations = "config file ์œ„์น˜") :

                                         ์Šคํ”„๋ง ์„ค์ • ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ž…๋ ฅํ•ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

3) @Autowired : ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ž๋™์œผ๋กœ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

4) @Test : ๋…๋ฆฝ์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋ฉ”์†Œ๋“œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

ํ•„์š”ํ•œ ๋นˆ ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์™€์„œ ๋…๋ฆฝ๋œ ๋ฉ”์†Œ๋“œ์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค๋‹ˆ๋‹ค.

 

 

์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” JUnit Test๋กœ ์‹คํ–‰ํ•ด์ค๋‹ˆ๋‹ค.

 

 

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋Š” ๋ณ„๋„์˜ ์ฐฝ์œผ๋กœ ์„ฑ๊ณต ์—ฌ๋ถ€ ๋ฐ ๊ฐ์ข… ์ •๋ณด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ •์ƒ ์ž‘๋™ํ•˜์˜€๋‹ค๋ฉด ์ดˆ๋ก์ƒ‰์ด, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๋ฉด ๋นจ๊ฐ„์ƒ‰ ํ”„๋กœ๊ทธ๋ž˜์Šค ๋ฐ”๊ฐ€ ๋œจ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


์˜คํ”ˆ ์ฑ„ํŒ