Back-end/Spring

[Spring] JUnit - @Before, @After

 

๐Ÿ’ก @Before, @After ๋ž€?

Test ์ฝ”๋“œ์—์„œ ์•„๋ž˜ ์ฝ”๋“œ๊ฐ€ ๊ณ„์† ์ค‘๋ณต๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ApplicationContext context =
	new GenericXmlApplicationContext("applicationContext.xml");
User dao = context.getBean("userDao", UserDao.class);

 

์ด๋ ‡๊ฒŒ ์ค‘๋ณต๋œ ์ฝ”๋“œ๋Š” ๋ณ„๋„์˜ ๋ฉ”์†Œ๋“œ๋กœ ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์†์‰ฌ์šด ๋ฐฉ๋ฒ•์ธ๋ฐ,

๋ฉ”์†Œ๋“œ ์ถ”์ถœ ๋ฆฌํŒฉํ† ๋ง ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ JUnit์ด ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ธ @Before, @After๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

โœ๏ธ @Before๋Š” ๋ฐ˜๋ณต๋˜๋Š” ์ค€๋น„ ์ž‘์—…์„ ๋ณ„๋„์˜ ๋ฉ”์†Œ๋“œ์— ๋„ฃ๊ฒŒ ํ•ด ์ฃผ๊ณ ,

์ด๋ฅผ ๋งค๋ฒˆ ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ๋จผ์ € ์ž๋™์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

 

โœ๏ธ @After๋Š” @Before์™€ ๊ฑฐ์˜ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด์ง€๋งŒ, @Test๊ฐ€ ๋ถ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ์‹คํ–‰๋œ๋‹ค๋Š” ์ ์—์„œ ๋‹ค๋ฅด๋‹ค.

 

๐Ÿ’ก JUnit ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰ ๋ฐฉ์‹

 

  1. ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์—์„œ @Test๊ฐ€ ๋ถ™์€ public์ด๊ณ  voidํ˜•์ด๋ฉฐ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†๋Š” ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ๋ฅผ ์ฐพ๋Š”๋‹ค.
  2. ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค.
  3. @Before๊ฐ€ ๋ถ™์€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์‹คํ–‰ํ•œ๋‹ค.
  4. @Test๊ฐ€ ๋ถ™์€ ๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜ ํ˜ธ์ถœํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด๋‘”๋‹ค.
  5. @After๊ฐ€ ๋ถ™์€ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์‹คํ–‰ํ•œ๋‹ค.
  6. ๋‚˜๋จธ์ง€ ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•ด 2~5๋ฒˆ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
  7. ๋ชจ๋“  ํ…Œ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•ด์„œ ๋Œ๋ ค์ค€๋‹ค.

์œ„์˜ ์ˆ˜ํ–‰ ๋ฐฉ์‹์„ ๋ณด๋ฉด JUnit์€ ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, @Before, @After๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๐Ÿง ๋งŒ์•ฝ ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ์˜ ์ผ๋ถ€์—์„œ๋งŒ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?

 

- @Before๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋ณด๋‹ค๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฉ”์†Œ๋“œ ์ถ”์ถœ ๋ฐฉ๋ฒ•์„ ์“ฐ๊ฑฐ๋‚˜, ๋ณ„๋„์˜ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์ž.

 

๐Ÿ’ก ํ”ฝ์Šค์ฒ˜(fixture)๋ž€? 

ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋‚˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งํ•œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— @Before์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ƒ์„ฑํ•ด๋‘”๋‹ค.

 

User ํ”ฝ์Šค์ฒ˜๋ฅผ ์ ์šฉํ•œ UserDaoTest

public class UserDaoTest{
	private UserDao dao;
	private User user1;
	private User user2;
	private User user3;
    
    @Before
    public void setUp(){
    	//..์ƒ๋žต
        this.user1 = new User("gyumee", "sungcheol Park", "springno1");
		this.user2 = new User("leegw700", "gilwon Lee", "springno2");
		this.user3 = new User("bumjin", "bumjin Park", "springno3");
    }
}

 

๐Ÿ“ƒ ์ •๋ฆฌ

JUnit์„ ์‚ฌ์šฉํ•  ๋•Œ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ์—์„œ ์กด์žฌํ•œ๋‹ค๋ฉด, @Before, @After๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์ž.

 

์ฝ”๋“œ ์ €์žฅ์†Œ : https://github.com/withseungryu

 

withseungryu - Overview

exchange student at georgia college & state university - withseungryu

github.com

 

์ฐธ๊ณ  ๋ฌธ์„œ : 

ํ† ๋น„์˜ ์Šคํ”„๋ง3 (์ด์ผ๋ฏผ)

๋ฐ˜์‘ํ˜•