์๋ฐ๋์...?!
์๋ฐ๋ ๋ฌด์กฐ๊ฑด ํด๋์ค์ ๋ฉ์ธ ๋ฉ์๋๊ฐ ์์ด์ผ ํ๋ค.
[ main ๋ฉ์๋ ]
main ๋ฉ์๋ ์์๋ ๋ด๊ฐ ๋ฐฐํฌ, ์๋น์คํ๊ณ ์ ํ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
[ ํจํค์ง ]
- ํจํค์ง = ๋๋ ํ ๋ฆฌ
์๋ฐ๋ ํจํค์ง๋ ๋๋ ํฐ๋ฆฌ๋ ๊ฐ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
ํจํค์ง๊ฐ ์์ผ๋ฉด, ์ด๋ค ๊ฒ๊ณผ ๊ด๋ จ๋ ํด๋์ค์ธ์ง ์ดํดํ๋ ๋ฐ ๋์์ด ๋๋ค.
- domain(model): ๋น์ฆ๋์ค ๋ก์ง ์์ญ
๋ณดํต model์ด๋ผ๋ ํํ ์ฐ๋๋ฐ, ์์ฆ์ domain์ด๋ผ๊ณ ๋ด๊ฐ ์ค์ ๋ค๋ฃจ๊ณ ์ ํ ์๋น์ค์ ๋น์ฆ๋์ค ๋ก์ง(๊ณ์ฐ์ ํ๋ค๊ฑฐ๋ ํ์๋ค์ด ์๋ ๊ฒ)์ด ๋ค์ด์๋ ์์ญ์ ์๋ฏธํ๋ค.
[ ํด๋์ค ]
ํด๋์ค๋ ๊ธฐ๋ฅ ๋ชจ์์ง์ด๋ค.
ํด๋์ค๋ ํด๋์ค ์ด๋ฆ๋ต๊ฒ ๋ญ๊ฐ ํ๋ ๋ฉ์๋(๊ธฐ๋ฅ๋ค) ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
- ์์ฑ์
command + n์ ๋๋ฌ constructor๋ฅผ ํด๋ฆญํ์ฌ ์์ฑ์๋ฅผ ๋ง๋ค ์ ์๋ค.
์์ฑ์๋ ํด๋์ค ์ด๋ฆ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ํน์ง์ด๋ค.
- ๋ฉ์๋
์๋ฐ์์ ํจ์๋ฅผ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์๋ฐ๋ ํ์ ์ ์ง์ ํ์ฌ ๋ช ์ํด์ผ ํ๋ค.
์ด๋ค ํ์ ์ผ๋ก ๋ฐ์์ง ๋ช ์ํ ์๊ฐ, ๊ทธ์ ๋ง๋ ํ์ ์ ๋ฐํํด์ผ ํ๋ค.
add(int number1, int number2)
์ด ๋ถ๋ถ์ ๋ฉ์๋์ ์๊ทธ๋์ฒ(๊ณ ์ ํ ์ฑ์ง)์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
- ์ ๊ทผ ์ ์ด์
์๋ฐ๋ ์ด ํด๋์ค, ๋ฉ์๋๋ฅผ ์ด๋๊น์ง ์ด์ด์ค์ง ๋ช ์์ ์ผ๋ก ์ง์ ํ ์ ์๋ค.
- public: ์ด ํด๋์ค ๋ฐ์์ ์ฌ์ฉํ๊ฒ ๋ค.
- private: ์ด ํด๋์ค ๋ด๋ถ์์๋ง ์ฐ๊ฒ ๋ค.
- ํด๋์ค ์ธ์คํด์ค
๋ค๋ฅธ ํด๋์ค์์ ๋ถ๋ฌ์ค๊ณ ์ถ์ ๊ฒ ์๋ค๋ฉด, 'new + ๋ถ๋ฌ์ค๊ณ ์ถ์ ํด๋์ค ์ด๋ฆ'์ ์์ฑํ๋ฉด ์ฌ์ฉํ ์ ์๋ค.
๋จ, ๋ถ๋ฌ์ค๊ณ ์ถ์ ํด๋์ค ์ด๋ฆ์ด ์ด๋์ ์๋์ง ์๋ ค์ค์ผ ํ๋ค.
import๋ฅผ ์ฌ์ฉํ์ฌ, ์์น๋ฅผ ์ ์ด์ค๋ค.
๋ก์ปฌ ๋ณ์์ ๋ด์์ ์ฌ์ฉํ์.
์ ์ธ ๋ฐ ํ ๋น์ ๋์์ ํ๋ค.
Calculator teacher = new Calculator();
= ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ(Calculator teacher)์ ์ ์ธ, ์ค๋ฅธ์ชฝ(new Calculator())์ด ํ ๋น์ด๋ผ๊ณ ํ๋ค.
new๋ผ๊ณ ๋ง๋ค์ด์ง ์๊ฐ ๋ณต์ฌ๋ณธ์ด๊ณ , teacher๋ ํด๋์ค์ ์ธ์คํด์ค๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ธ์คํด์ค ๋ณ์
๋ฉ์๋์์ ๋์ค๋ ๊ฒฐ๊ด๊ฐ์ ์ ์ฅํ๋ ค๋ฉด, ํด๋์ค ๋ฒ์ ๋ด์์ ๊ด๋ฆฌํ๊ณ ์ถ๋ค๋ฉด, ํด๋น ํด๋์ค ๋ด์์ ๋ณ์๋ฅผ ์ ์ธํ๋ค.
public์ผ๋ก ์ง์ ํ๋ฉด ํด๋์ค ์ธ๋ถ์์ ์ ๊ทผํ ์ ์๋ ๋ณ์๊ฐ ๋๋ค.
ํด๋์ค ๋ด๋ถ์ด๋ฉด์ ๋ฉ์๋ ๋ฐ์ ์๋ ๋ณ์๋ค์ ์ธ์คํด์ค ๋ณ์๋ผ๊ณ ๋ถ๋ฅธ๋ค.
* static์ด ์๋ ๊ฒ์ด ํน์ง์ด๋ค.
- ํด๋์ค ๋ณ์
๋ณต์ฌ๋ฅผ ํด์ ์ฌ์ฉํ ๋๋, ๊ฐ์ ๊ณต์ ํด์ค์ง ์๋๋ค.
* ๋ง์ฝ ๊ณต์ ํด์ฃผ๊ณ ์ถ๋ค๋ฉด, static์ ๋ถ์ฌ์ ์ฌ์ฉํ๋ค
๊ฐ์ ๊ณ์ ์ ๋์ ์ผ๋ก ๋ฐ๊ฟ ์ ์ฅํ๋ค.
- ์์(ํด๋์ค ๋ณ์์ด๋ฉด์ ๋ถ๋ณ ๊ฐ)
* static final์ ์ฌ์ฉํ๋ฉด, ๊ฐ์ ๊ณต์ ๋ ํ์ง๋ง ์ ๋ ๋ณํ๋ฉด ์ ๋๋ ๋ณ์๊ฐ ๋๋ค.
ํญ์ ๊ฐ์ ๋ณ์์ด๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ์์๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฆ, ์์ ๋ฐ ํด๋์ค ๋ณ์์ด๋ฉด์ ๋ณํ์ง ์๋ ๊ฐ์ด๋ค.
public static final int SHARE_BIRTHDAY = 1104;
์ ๋ถ ๋๋ฌธ์๋ก ์ฐ๋ ๊ฒ์ด ํน์ง์ด๊ณ , ๋์ด์ฐ๊ธฐ๋ underbar(_)๋ก ์ฌ์ฉ๋๋ค.
์๋๋, ์ ๊ฐ๋ ๋ค์ ์ ๋ฆฌํ ์์์ด๋ค.
public class Calculator {
public static final int SHARE_BIRTHDAY = 1104; // ์์, ํด๋์ค ๋ณ์์ด๋ฉด์ ๋ณํ์ง ์๋ ๊ฐ
public static int shareResult = 0; // ํด๋์ค ๋ณ์
public int result = 0; // ์ธ์คํด์ค ๋ณ์
public Calculator() { // ์์ฑ์
}
public int add(int number1, int number2) { // ๋ฉ์๋
result = number1 + number2;
shareResult = result;
return result;
}
}
# ์ฐธ๊ณ ๋ก, ๋ค๋ฅธ ๋ฉ์๋์์ ์ ์ (static) ๋ฉ์๋์ ์๋ ๊ฑธ ์ ๊ทผํ๋ ค๋ฉด, ๋ค๋ฅธ ๋ฉ์๋๋ ์ ์ ๋ฉ์๋์ ์์ด์ผ ์ ๊ทผ ๊ฐ๋ฅํ๋ค.
[ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด๋? ]
- ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ ํด๋์ค๋ฅผ ์ธ์คํด์คํ(=๊ฐ์ฒด=์ค๋ธ์ ํธ) ํ๋ค.
- ํ์ํ ๊ธฐ๋ฅ์ (์ญํ ์ ๋ง๋) ์ธ์คํด์ค๊ฐ ์ํํ๊ฒ ํ๋ค. (= ์์ธํ)
- ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ์ข ํฉํ๋ค.
์ด ๊ณผ์ ์ด ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์งํํ๊ณ ์๋ ๊ฒ์ด๋ค.
[ ํ ์คํธ ]
ํ ์คํธ๋ ์๋ฒ์ ์ํฅ์ ์์ง๋ง, ๋ด๊ฐ ํ ์คํธํ๊ณ ์ ํ๋ ์์ญ์ด ์์ ๋ค์ด๊ฐ๋ค.
๋จ์ํ ๋ค ๋ง๋ ๋ค์ ํ ์คํ ํ๋ ๊ฒ ์๋๋ผ, ํ๋ก๋์ ์ ํ ์คํธํ๊ธฐ ์ํ ์ฝ๋๋ค์ด ๋ค์ด๊ฐ๋ ๊ณณ์ด๋ค.
- assertThat
ํ ์คํธ์์ assertThat์ ์ฌ์ฉํด์ ๋ด๊ฐ ์๋, ์ปดํจํฐ๊ฐ ํ์ธํ๊ฒ ํ์.
assertThat(result).isEqualsTo(answer);
์ผ์ชฝ์ด ๋ด๊ฐ ๊ตฌํํ ๊ฐ(result), ์ค๋ฅธ์ชฝ์ด ์ค์ ์ ๋ต์ผ๋ก ์๊ฐํ ๊ฐ(answer)์ ์ ์.
- @BeforeEach
@BeforeEach๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค ์ธ์คํด์ค ์ค๋ณต์ ํด๊ฒฐํ๊ณ , ํด๋์ค ์ธ์คํด์ค๋ฅผ ์ ์ด๋์.
@BeforeEach ๋ฅผ ์ฌ์ฉํ๋ฉด, ๊ฐ ํ ์คํธ๋ง๋ค ๋จผ์ ์คํํ ์ ์๊ฒ ํ๋ค.
private๋ก ํ ์คํธ ํด๋์ค ๋ฐ๋ก ์๋์ ๊ฐ์ฒด ์ ์ธ์ ๋จผ์ ํด๋๊ณ , @BeforeEach๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ํ ๋นํ์.
- ๋ ๋ค๋ฅธ ์ค๋ณต ๋ฐฉ์ง ๋ฐฉ๋ฒ(refactor ๊ฐ๋ฅ)
@ParmeterizedTest
@CsvSource({”1, 2, 3, …”}) ๋ฅผ ์ฌ์ฉํ์.
'์ฐ์ํํ ํฌ์ฝ์ค 5๊ธฐ ๋ฐฑ์๋ ํ๋ฆฌ์ฝ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋ (0) | 2022.12.05 |
---|---|
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] MVC ํจํด (0) | 2022.11.30 |
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] ํผ๋๋ฐฑ ์ ๋ฆฌ (0) | 2022.11.25 |
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] ์ฐธ์ฌ ํ๊ธฐ (0) | 2022.11.24 |
[์ฐํ ์ฝ 5๊ธฐ ํ๋ฆฌ์ฝ์ค] 4์ฃผ์ฐจ: ๋ค๋ฆฌ ๊ฑด๋๊ธฐ (0) | 2022.11.24 |