Spring DI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ Spring-Testํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ์ž‘์„ฑํ•˜๊ธฐ

2021. 11. 9. 11:44ใ†Spring

728x90

 

https://hyejin.tistory.com/243?category=1022293 

 

[Spring] DI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ Junit ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ์ž‘์„ฑํ•˜๊ธฐ

1. Junit Junit์€ ๋‹จ์œ„ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. Junit์€ @Test ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ๊ฐ ํ˜ธ์ถœ๋ ๋•Œ ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋„๋ก ํ•œ๋‹ค. โ— ๋‹จ์œ„ํ…Œ์ŠคํŠธ๋ž€? ๋ชจ๋“  ํ•จ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ

hyejin.tistory.com

์ „ ๊ธ€์— Junit ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•ด์„œ ์‹คํ–‰ํ•ด๋ดค๋‹ค. 

์ด๋ฒˆ์—๋Š” ๋” ๋‚˜์•„๊ฐ€ Sprint-Test๋ฅผ ์‚ฌ์šฉํ•ด DI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ์ด๋‹ค. 

 

1. Sprint-test ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ํ•˜๊ธฐ 

https://mvnrepository.com/artifact/org.springframework/spring-test

๊ฐ€์žฅ ์ตœ์‹ ๋ฒ„์ „ ๋ฐ‘์— ๋ฒ„์ „์„ ์„ค์น˜ํ•  ์˜ˆ์ •์ด๋‹ค.

pom.xml์— ์ถ”๊ฐ€

 

2. Spring-Test annotation 

 

1๏ธโƒฃ @RunWith(SpringJunit4ClassRunner.class)

@RunWith์€ Junit ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํ…Œ์ŠคํŠธ ์‹คํ–‰๋ฐฉ๋ฒ•์„ ํ™•์žฅํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

SpringJunit4ClassRunner๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด Junit์ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์ค‘์— ApplicationContext๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด์ค€๋‹ค.

@RunWith์€ ๊ฐ๊ฐ์˜ ํ…Œ์ŠคํŠธ๋ณ„๋กœ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค ํ•˜๋”๋ผ๋„ ์‹ฑ๊ธ€ํ†ค์˜ ApplicationContext๋ฅผ ๋ณด์žฅํ•œ๋‹ค. 

 

2๏ธโƒฃ @ContextConfiguration 

์Šคํ”„๋ง ๋นˆ(Bean) ์„ค์ • ํŒŒ์ผ์˜ ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด๋‹ค.

 

3๏ธโƒฃ @Autowired

์Šคํ”„๋งDI์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ํ•ด๋‹น ๋ณ€์ˆ˜์— ์ž๋™์œผ๋กœ Bean์„ ๋งคํ•‘ํ•ด์ค€๋‹ค.

์Šคํ”„๋ง ๋นˆ ์„ค์ • ํŒŒ์ผ์„ ์ฝ๊ธฐ ์œ„ํ•ด ๊ตณ์ด GenricXmlApplicationContext๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

 

3. Sprint-Test๋ฅผ ์‚ฌ์šฉํ•œ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ์ž‘์„ฑ 

https://hyejin.tistory.com/242?category=1022293 

 

[Spring] DI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ

 Spring DI Application ๋งŒ๋“ค๊ธฐ 1๏ธโƒฃ POJO ํด๋ž˜์Šค ์ƒ์„ฑํ•˜๊ธฐ => Printer๋ผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  StringPrinter๊ฐ€ ์ด๋ฅผ ์ฐธ์กฐํ•ด์„œ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  Hello ์ž๋ฐ” ํด๋ž˜์Šค๋Š” StringPrinter๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜..

hyejin.tistory.com

์ด๋ฒˆ์—๋„ ์ „๊ธ€์—์„œ ๋งŒ๋“  DI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ์ด๋‹ค.

 

@Autowired ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž๋™์œผ๋กœ ๋นˆ์„ ๋งคํ•‘ํ•ด์ฃผ๋„๋ก ํ•œ๋‹ค. 

@RunWith์„ ํ†ตํ•ด junit ํ”„๋ ˆ์ž„์›Œํฌ ํ…Œ์ŠคํŠธ๋ฅผ ํ™•์žฅํ•ด์ฃผ๊ณ , SpringJunit4ClassRunner ํด๋ž˜์Šค๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด jUnit ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ์ค‘์— ApplicationContext๋ฅผ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค. 

@ContextConfiguration์„ ํ†ตํ•ด ์Šคํ”„๋ง ๋นˆ ์„ค์ • ํŒŒ์ผ์˜ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ฃผ์–ด ๋ฐ‘์— ์ฝ”๋“œ๋กœ ๋”ฐ๋กœ ์ž‘์„ฑํ•ด์ฃผ์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 

 

4. ์‹คํ–‰๊ฒฐ๊ณผ 

ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90