๐ ๊ด๋ จ ๊ธ
- [Spring ์น ํ๋ก์ ํธ] ์๋ฐ ํ๋ซํผ GOING
- [Spring MVC ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง] 1. ๊ตญ๋น์ง์๊ต์ก์ ํ๊ณ
- [Spring MVC ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง] 2. SqlSessionFactory -> SqlSessionTemplate
- [Spring MVC ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง] 3. ์์กด์ฑ ์ฃผ์ ์์
- [Spring MVC ํ๋ก์ ํธ ๋ฆฌํฉํ ๋ง] 4. @Service, ๋น์ฆ๋์ค ๋ก์ง ๋ถ๋ฆฌ
- [Spring/์คํ๋ง] JUnit์ ์ด์ฉํ ๋จ์ ํ ์คํธ, @Test
- ์นํ๋ก์ ํธ ๋ฌธ์์ธ์ฆ ๊ตฌํํ๊ธฐ with ๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ
- [Java/์๋ฐ] ๋ ์ง-Date์ ๋ชจ๋ ๊ฒ (ํ์ฌ-๋ด์ผ ๋ ์ง, Date ํฌ๋งท ๋ณํ, ๋ ์ง ์ฐจ์ด ๊ณ์ฐ, ๋ํ๊ธฐ, ๋นผ๊ธฐ)
- ์๋ฐ ์ธ๋ฏธ ํ๋ก์ ํธ - ์๋ฐ ํ๋ซํผ GOING
โก๏ธ๋จ์ ํ ์คํธ
๋จ์ ํ ์คํธ๋ ์์ค ์ฝ๋์ ๋ ๋ฆฝ๋ ํน์ ๋ชจ๋์ ๊ฐ๋ณ์ ์ผ๋ก ๊ฒ์ฆํ๋ ํ ์คํธ์ ๋๋ค.
ํ๋ก์ ํธ์์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ์ฟผ๋ฆฌ์ ์ค๋ฅ๊ฐ ์๋์ง ํ๋ํ๋ ์น์๋ฒ๋ฅผ ์ผ์ ์ง์ ํ์ธํ๋ ๊ฑด๋๋ฌด ์์๊ฐ ํฌ๋ค๊ณ ์๊ฐํด
๋จ์ ํ ์คํธ๋ฅผ ๋์ ํด๋ดค๋๋ฐ ์๊ฐ ์ด์์ผ๋ก ๋๋ฌด ํธ๋ฆฌํ๊ณ ํจ์จ์ ์ด์์ต๋๋ค.
ํนํ ์คํ๋ง์์๋ ์ด๋ฌํ ํ ์คํธ ํ๊ฒฝ์ด ์ ๊ฐ์ถฐ์ ธ ์์ด ํฐ ์ด๋ ค์ ์์ด ์๋ํด๋ณผ ์ ์์์ต๋๋ค.
๊ทธ๋ผ [์ดํด๋ฆฝ์ค + ํฐ์บฃ + 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๋ก ์คํํด์ค๋๋ค.
ํ ์คํธ ๊ฒฐ๊ณผ๋ ๋ณ๋์ ์ฐฝ์ผ๋ก ์ฑ๊ณต ์ฌ๋ถ ๋ฐ ๊ฐ์ข ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ ์ ์๋ํ์๋ค๋ฉด ์ด๋ก์์ด, ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๋นจ๊ฐ์ ํ๋ก๊ทธ๋์ค ๋ฐ๊ฐ ๋จ๊ฒ ๋ฉ๋๋ค.
๋๊ธ