ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ ๊ณ ๋ คํ ๋ถ๋ถ๋ค
1. ํ ์คํธ ๋ค์ด๋ฐ ๊ท์น
https://dzone.com/articles/7-popular-unit-test-naming
7 Popular Strategies: Unit Test Naming Conventions - DZone Agile
dzone.com
github discussion ์์ ํ ๋ถ์ด ๊ณต์ ํด์ฃผ์ ์ ์ฐธ๊ณ ํ๋ ๊ธ์ด๋ค.
์ด์ ๊น์ง๋ ํ ์คํธ์ฝ๋์ ๋ฉ์๋๋ช ๊น์ง ์ ๊ฒฝ์จ์ผ๊ฒ ๋ค๋ ์๊ฐ์ ๋ชปํด์ ๋ณ๋ค๋ฅธ ๋ค์ด๋ฐ ๊ท์น ์์ด ๋ ์ค๋ฅด๋ ๋๋ก ๋ฉ์๋๋ช ์ ์ง์์๋ค. ๊ทธ๋๋ง ๊ท์น์ด ์๋ค๋ฉด ๋ด๊ฐ ์ฌ์ฉํ๋ ๋ฉ์๋๋ช ์ ํํ๋ check + ํ์ธํ๊ณ ์ ํ๋ ๋ฉ์๋๋ช ์ด์๋ค. ๊ทธ๋ฌ๋, ์ด๋ ๊ฒ ๋ ๊ฒฝ์ฐ์๋
1. ๋ฉ์๋๋ช ์ ๋ฆฌํฉํ ๋งํ๊ฑฐ๋ ๋ฉ์๋์ ์ญํ ์ ์์ ํ ๋๋ง๋ค ํ ์คํธ์ฝ๋์ ๋ฉ์๋๋ช ๋ ํจ๊ป ์์ ํด์ค์ผ ํ๋ค๋ ๋ถํธํจ์ด ์์๋ค.
2. ๋ํ, ์ด๋ฐ ์ค๋ฅ๋ค์ ์ปดํ์ผ ์ค๋ฅ๋ ์๋๋ผ์ ๋ด๊ฐ ์ผ์ผ์ด ํ์ธํ๊ณ ์์ ํด์ผ ํด์ ๋์น๊ธฐ ์ฝ๋ค๋ ๋ฌธ์ ์ ์ด ์์๋ค.
๋ฐ๋ผ์ ์ด๋ฒ ์ฃผ์ฐจ์๋, ์๋์ ๊ท์น์ ๋ฐ๋ผ ํ ์คํธ ๋ฉ์๋๋ฅผ ๋ค์ด๋ฐํ๋ค.
is + ํ ์คํธํ ๊ธฐ๋ฅ + (์ธ์๊ฐ ์๋ค๋ฉด) with ____ ์ด๋ฌํ ํํ๋ก ์งํํ๋ค.
2. ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ํจ์จ์ ์ผ๋ก ํ์ฉํด๋ณด์
์ด์ ์ฃผ์ฐจ์์๋ [ERROR] ์ด๋ผ๋ prefix ๋ฅผ ์์๋ก ๋๊ณ ๋จ์ ๋ฌธ์์ด ๋ํ๊ธฐ ์ฐ์ฐ์ ํตํด์ ์๋ฌ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค. ๊ทธ๋ฌ๋ ์ ๋ง ์ด๊ฐ ์ต์ ์ผ์ง ์๋ฌธ์ด ๋ค์๋ค. ๋ฐ๋ผ์ ์ด๋ฒ ์ฃผ์ฐจ์๋ ErrorStatus ๋ผ๋ Enum ์ ๋๊ณ , message ๋ผ๋ ๋ฉค๋ฒ ๋ณ์๋ฅผ ๋์ด ๋ฌธ๊ตฌ ๋ฐํ ์์ [ERROR] ์ ๋ถ์ฌ์ ๋ฐํํ๋๋ก ํ๋ค. ์ด๋ ๊ฒ ํ๋, ์ถ๋ ฅ ํํ๋ ์งํค๋ฉด์๋ ์๋ฌ ๋ฉ์์ง ์์ฒด์ ๋ํ ์์ ๊ณผ ํ๋ ์ฝ๋ฉ ์์ด ํด๊ฒฐํ ์ ์์๋ค.
package bridge.validator;
public enum ErrorStatus {
BRIDGE_SIZE_TYPE_ERROR("๋ค๋ฆฌ ๊ธธ์ด๋ ์ ์๋ง ์
๋ ฅ ๊ฐ๋ฅํฉ๋๋ค."),
BRIDGE_SIZE_RANGE_ERROR("๋ค๋ฆฌ ๊ธธ์ด๋ 3๋ถํฐ 20 ์ฌ์ด์ ์ซ์์ฌ์ผ ํฉ๋๋ค."),
BRIDGE_SIZE_BLANK_ERROR("๋ค๋ฆฌ ๊ธธ์ด๋ ๊ณต๋ฐฑ์ผ๋ก ๋ ์ ์์ต๋๋ค."),
DIRECTION_SIGN_ERROR("์ด๋ํ ์นธ์ U ํน์ D ๋ง ์
๋ ฅ ๊ฐ๋ฅํฉ๋๋ค."),
GAME_COMMAND_SIGN_ERROR("์ฌ์์ ์ฌ๋ถ๋ R ํน์ Q๋ง ์
๋ ฅ ๊ฐ๋ฅํฉ๋๋ค.");
private final String message;
ErrorStatus(String message) {
this.message = message;
}
public String getMessage() {
return "[ERROR] " + this.message;
}
}
3. static ํค์๋๋ฅผ ํจ๋ถ๋ก ์ฌ์ฉํ์ง ์๊ธฐ
์ด๋ฒ ์ฃผ์ฐจ์์ ์ฐ์ํ ํ ํฌ์ฝ์ค ์ธก์์ ๋ฏธ๋ฆฌ ์ฃผ์ด์ง ํด๋์ค๊ฐ ์ด์ ์ฃผ์ฐจ๋ณด๋ค ํ์ฐํ ๋ง์๊ณ , ์ ํ ์ฌํญ๋ ๋์ด๋ฌ๋ค. ์ด ์ค ๊ฐ์ฅ ์ธ์์ ์ด์๋ ๊ฒ์ OutputView ์ InputView ๋ฅผ static ๋ฉ์๋๋ก ์ฌ์ฉํ์ง ๋ชปํ๊ฒ ํ ๊ฒ์ด์๋ค. ๋์ ๊ฒฝ์ฐ์๋ ์ด์ ๊น์ง๋ ๋ชจ๋ธ, ์ปจํธ๋กค๋ฌ ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๊ฑฐ์ ๋ค static ์ผ๋ก ๋ฉ์๋๋ฅผ ๋๊ณ ์ฌ์ฉํ์๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ์ ํ ์ฌํญ์ ๋ณด๋ฉฐ static ์ ๋จ๋ฐํด์๋ ์๋๋ ๊ฒ์ด์๊ฒ ๊ตฌ๋. ํ๋ ์๊ฐ์ด ๋ค์๋ค. ๊ทธ๋์ static ํค์๋๊ฐ ์ด๋ค ๋จ์ ์ด ์์์ง ์ฐพ์๋ณด์๋ค.
https://velog.io/@yyy96/static
static ๊ณผ ๊ฐ์ฒด์งํฅ์ ๊ด์
static ์ ๊ดํ์ฌ. ๊ทธ๋ฆฌ๊ณ ์๋ฐ๊ฐ static์ ์ง์ํ๋ ์ด์ ๋?
velog.io
1. ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น
2. ์บก์ํ์ ์๋ฐ๋๋ ํค์๋
- ์บก์ํ๋ ํ ๊ฐ์ฒด๊ฐ ์ง๋๊ณ ์๋ ๋ฐ์ดํฐ๋ค์ ์ธ๋ถ์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ํด์ผ ํ๋๋ฐ ์ ์ญ๋ณ์์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์งํฌ ์ ์๋ค.
3. ์ฌ์ฌ์ฉ์ฑ์ด ๋จ์ด์ง๋ค. (interface ์ ์ฌ์ฉ๋ ์ ์์)
๋ฐ๋ผ์ ์ด๋ฒ ์ฃผ์ฐจ์๋, static ๋ฉ์๋์ ์ฌ์ฉ์ ์ค์ด๊ณ ์ต๋ํ ์ธ์คํด์ค ๋ณ์๋ก ๊ฐ์ฒด๋ค์ ์ฃผ์ ๋ฐ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ๋ ธ๋ ฅํ๋ค. ๋ํ, InputView, OutputView ์ ๊ฒฝ์ฐ์๋ ํ์ฌ๋ ๋จ ๋๊ฐ๋ง์ view ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ static ์ผ๋ก ์ฌ์ฉํด๋ ๋ฌด๊ดํ์์ง๋ง(๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค๊ณ ์๊ฐํ์๋ค.) ์ปจํธ๋กค๋ฌ๊ฐ ์ฌ๋ฌ๊ฐ๊ฐ ๋๊ณ view ๋ ์ฌ๋ฌ๊ฐ๊ฐ ๋ ๊ฒฝ์ฐ์๋ ์ปจํธ๋กค๋ฌ๋ง๋ค ์๋ง๋ view ๋ฅผ ์ฃผ์ ์์ผ ์ฃผ๋ ๊ฒ์ด ๋ง๋ ์์์ด๋ผ๋ ์๊ฐ๋ ํ๋ค.
4. ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฌ์ฉ์ฑ์ ๋์ด๊ธฐ
์๊ตฌ ์ฌํญ์ด์๋ ๋ฉ์๋์ ๊ธธ์ด๊ฐ 10๋ผ์ธ์ ๋์ด๊ฐ์ง ์๊ธฐ ๋ผ๋ ์กฐ๊ฑด์ ๋ง์กฑ์ํค๊ธฐ ์ํด์ ๋ฉ์๋๋ฅผ ๋ถ๋ฆฌํ๋ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ ๊ฑฐ์ณค๋ค. ์ด ๊ณผ์ ์์ ๋ฉ์๋๋ง๋ค ์ค๋ณต๋๋ ์ฝ๋๋ฅผ ๋ฝ์๋ด์ด ๋ค๋ฅธ ๋ฉ์๋๋ก ๋ถ๋ฆฌํ๊ฒ ๋์๊ณ , ์ด ๊ณผ์ ์์ validator/ ์ ํด๋์ค๋ค์ ์ธ์๋ก ๋ฐ์์ผ ํ๋ ์ํฉ์ด ๋์๋ค. ์ด ๊ณผ์ ์์ ๊ณ ๋ฏผ์ ํ๋ ๊ฒ์ด, validator ๋ง๋ค ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ค์ผ ํ๋๊ฐ? ์๋ค. ์ฝ๋๋ ๋๊ฐ์๋ฐ ๋จ์ํ ์ธ์๊ฐ ๋ค๋ฅด๋ค๋ ์ด์ ๋ก ๊ทธ๋ฐ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ ๊ฒ์ผ๊น? ํ๋ ์๋ฌธ์ด ๋ค์๋ค. ๊ทธ๋์ Validator ๋ผ๋ ์ธํฐํ์ด์ค๋ฅผ ๋๊ณ , BridgeSizeValidator, DirectionValidator, GameCommandValidator ๋ค์ด ๋ชจ๋ ํด๋น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋๋ก ํ๋ค. ์ด๋ ๊ฒ ํ๋, ์ธ์๋ฅผ Validator ๋ผ๋ ์ธํฐํ์ด์ค๋ก ๋ฌถ์ด์ ๋ฐ์ ์ ์๊ฒ ๋์๋ค.
private String readInputValue(Validator validator) {
String inputValue;
do {
inputValue = Console.readLine();
} while (!validateInputValue(inputValue, validator));
return inputValue;
}
๋ํ, ๊ธฐ์กด์ ํด๋น validator ํด๋์ค๋ค์ ๋ชจ๋ validate ๋ผ๋ ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์์๋ค. ๋ฐ๋ผ์ ์ธํฐํ์ด์ค์์ validate ๋ฉ์๋๋ฅผ ๊ตฌํํ๋๋ก ๊ฐ์ ํ๊ฒ ํ๋ค.
public interface Validator {
void validate(String input);
}
5. ์ปค๋ฐ ๋ฉ์์ง ์์ฑ ์ body ๋ฅผ ์ ๊ทน ํ์ฉ
์ด๋ฒ ์ฃผ์ฐจ์๋ ์ปค๋ฐ ๋ฉ์์ง์ body ๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ฌ ์์ฑํ๊ณ ์ ํ๋ค.
ํนํ refactor ์ ๊ฒฝ์ฐ, ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋ง ํ ๋น์์๋ ๋ฆฌํฉํ ๋ง์ ์ด์ ๊ฐ ํ๋นํ๋ค๊ณ ์๊ฐํ์ฌ ์งํํ์ง๋ง ์ถํ์ ๋ค์ ๋ค์ฌ๋ค๋ดค์ ๋์๋ ์ด๋ค ๋ถ๋ถ์ด ์ด๋ค ์ด์ ๋ก ์์ ๋๋์ง ์ ํ์ ๋์ง ์์์๊ธฐ์ ์ด๋ฒ์ฃผ์ฐจ์๋ ์ด๋ฅผ ๊ฐ์ ํ๊ธฐ ์ํด ์์ ๊ฐ์ด ์์ธํ๊ฒ body๋ฅผ ์์ฑํ๊ณ ์ ๋ ธ๋ ฅํ๋ค.
5. @ParameterizedTest ๋ฅผ ์ด์ฉ
ํ ์คํธ์ฝ๋๋ ์ฝ๋๋ค ๋ผ๋ ์ง๋ ์ฃผ์ฐจ ํผ๋๋ฐฑ์ ํ์ธํ๊ณ , ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ์ง์ํ๊ธฐ ์ํด์ ํผ๋๋ฐฑ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด ํด๋น ์ด๋ ธํ ์ด์ ์ ํ์ฉํ๋ค.
๐ ์๊ฐ๋ฌธ
์ด๋ฒ ์ฃผ์ฐจ์ ์ ๋ฒ ์ฃผ์ฐจ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด์ ์ผ๋ก ๋๋ ๊ฒ์ ์ ์ฝ์ฌํญ์ด ๋ง์์ก๋ค๋ ์ ์ด์์ต๋๋ค.
1. ๋ฏธ๋ฆฌ ์ฃผ์ด์ง ์ฝ๋๊ฐ ์๋์ ์ผ๋ก ๋ง์์ก๋ค.
2. ๋ฉ์๋ ๋ผ์ธ์ 10์ค ์ด๋ด๋ก ์ ํํด์ผ ํ๋ค.
๊ทธ ์ค, ์ฒซ๋ฒ์งธ์ ๊ด๋ จํ์ฌ ์ด๋ฒ ์ฃผ์ฐจ์ ํ์ตํ ๊ฒ์ static ํค์๋ ์ฌ์ฉ์ ์์ ํด์ผ ํ๋ค๋ ๊ฒ์ด์์ต๋๋ค. ์ฐ์ , ์ด์ ์ฃผ์ฐจ๊น์ง๋ controller ์ model ์ ์ ์ธํ๊ณ ๋ ๋ชจ๋ static ๋ฉ์๋๋ก ๋์ด ๊ฐ์ฒด๋ฅผ ๋ฐ๋ก ์์ฑํ์ง ์๊ณ ์ฌ์ฉํด์์ต๋๋ค. ์ด๋ ๊ฒ ํด์๋ ์ด์ ๋ ์ ํธ๋ฆฌํฐ ๋ฉ์๋์ด๊ธฐ ๋๋ฌธ์ด๊ณ , ํด๋ฆฐ์ฝ๋๋ฅผ ์ํด์๋ ์ธ์คํด์ค ๋ณ์๋ฅผ 3๊ฐ ์ด๋ด๋ก ๋๋ ๊ฒ์ด ์ข์๋ฐ ํด๋น ๊ฐ์ฒด๊น์ง ๋ชจ๋ ์ธ์คํด์ค ๋ณ์๋ก ๋๊ฒ ๋๋ฉด ์ธ์คํด์ค ๋ณ์๊ฐ ๋๋ฌด ๋ง์์ง ๊ฒ์ ์ฐ๋ คํ๊ธฐ ๋๋ฌธ์ด์์ต๋๋ค. ๊ทธ๋ฌ๋, ์ด๋ฒ์ฃผ์ฐจ์๋ ํนํ view ์ ์ํ ๋ฉ์๋๋ค์ static ๋ฉ์๋๋ก ์์ ํ ์ ์๊ฒ ๋์ด ์์ด ์ ์ด๋ ๊ฒ ์ฐ์ํ ํ ํฌ์ฝ์ค ์ธก์์ ์ ํ ์ฌํญ์ ๋์์์ง ๊ณ ๋ฏผํด๋ณด์์ต๋๋ค. static ๋ฉ์๋๊ฐ ํน์ ์น๋ช ์ ์ธ ๋จ์ ์ ์๊ณ ์๋? ํ๊ณ ์ฐพ์๋ณด๋ฉฐ ์ด๊ฐ ๊ฐ์ฒด์งํฅ์ ์ด์ง ์์์ ํ์ตํ์ต๋๋ค. ๋ฐ๋ผ์ ์ต๋ํ ์ด๋ฅผ ์ง์ํ๋ฉฐ ์ฝ๋๋ฅผ ์ง๊ณ ์ ๋ ธ๋ ฅํด๋ดค์ต๋๋ค. ๋ํ, 10์ค ์ด๋ด๋ก ๋ฉ์๋ ๋ผ์ธ์ ์ค์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ์๋๋ง๋ค ๊ณตํต์ ์ธ ์ฝ๋๋ฅผ ๋ฝ์๋ด๋ ์ฐ์ต์ ํ๊ฒ ๋์์ต๋๋ค. ์ด ๊ณผ์ ์์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ํด๋์ค๋ค์ ํ๋์ ํ์ ์ผ๋ก ๋ฌถ์ด ์ธ์๋ก ๋ฐ์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์ต๋๋ค. ๋ฐ๋ผ์ ์ ํจ์ฑ ๊ฒ์ฌํ๋ ํด๋์ค๋ค์ด๋ผ๋ ํน์ฑ์ ์ด๋ ค ํด๋น ํด๋์ค๋ค์ด ๋ชจ๋ ํ๋์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋๋ก ํ์ฌ ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์๊ณ ํด๋์ค์ ๋ถ๋ฆฌ์ ๋ช ํํ ์ญํ ์ ๋ถ๋ฅ๋ฅผ ํ ์ ์๊ฒ ๋์์ต๋๋ค. ๋ํ, ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ ธ ๋ดค์ ๋๋ ๊ฐ์ ์ญํ ์ ํ๋ ํด๋์ค๋ค์ด ๊ฐ์ ํํ์ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด ๋ง๋ค๊ณ ํ๋จํ์ต๋๋ค. ์ด๋ฅผ ํตํด ์ธํฐํ์ด์ค๋ ์ด๋ฐ ์ด์ ๋ก ์ฌ์ฉํ๋๊ตฌ๋ ์ฒด๊ฐํ ์ ์์์ต๋๋ค.
์ด๋ ๊ฒ ๋ฆฌํฉํ ๋ง์ ๊ฑฐ์น๋ ๊ณผ์ ์์ ํ์ตํ๋ ๋ถ๋ถ์ด ๋ง์์ผ๋ ์ด๋ค ์ด์ ๋ก ๋ฆฌํฉํ ๋ง์ ์งํํ๊ณ , ์ด๋ค ๋ถ๋ถ์ด ์์ ๋์๋์ง ๊น๋จน๊ธฐ ์ผ์ค์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฒ ์ฃผ์ฐจ์๋ ๊นํ ์ปค๋ฐ ๋ฉ์์ง์ ๋ฐ๋ ๋ถ๋ถ์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ์ฌ ์์ ๋ด์ฉ๊ณผ ์์ ์ด์ ๋ฅผ ๋๋ฆ๋๋ก ์ ์ด๋ณด์์ต๋๋ค. ์ด ๊ณผ์ ์ ํตํด ๋ด๊ฐ ํ๊ณ ์๋ ๋ฆฌํฉํ ๋ง์ด ํ๋นํ ๊ฒ์ธ์ง์ ๋ํด์๋ ํ๋ฒ ๋ ๊ณ ๋ฏผ์ ๊ฑฐ์น๊ฒ ๋์์ต๋๋ค.
๋ํ ์ด๋ฒ์ฃผ์ฐจ์ ๋ฐฐ์ด ์ ์, ํ ์คํธ์ฝ๋๋ ์ฝ๋๋ค. ๋ผ๋ ๊ฒ์ด์์ต๋๋ค. ํ ์คํธ์ฝ๋ ์ญ์๋ ํจ์จ์ ์ธ ๊ตฌ์กฐ์ ๋ฐ๋ณต์ ์ธ ์ฝ๋๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒ์ด ์ข๋ค๋ ๊ฒ์ ๋ฐฐ์ ๊ณ , ๋ฉ์๋ ๋ค์ด๋ฐ์ ๊ณ ๋ฏผํ๊ฒ ๋์์ต๋๋ค. ์ด์ ๊น์ง๋ ๋ณ๋ค๋ฅธ ๊ท์น์ ์๊ฐํ์ง ์๊ณ ๋จ์ํ check+ํ์ธํ๊ณ ์ ํ๋ ๋ฉ์๋๋ช ๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก ๋ค์ด๋ฐํด์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด ๋ฐฉ๋ฒ์ ๋ฉ์๋๋ช ์ ์์ ํ ๋๋ง๋ค ๋ฉ์๋๋ช ๋ ์์ ํด์ค์ผํ๊ณ , ์ด๋ ๋ก์ง์ด ๋ฐ๋์ง ์์์์๋ ํ ์คํธ์ฝ๋๋ฅผ ์์ ํด์ผ ํ๋ ์์ด๋ฌ๋์ ๋ฒ๊ฑฐ๋ก์์ ๋๋ผ๊ฒ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค, github discussion ์ ํตํด์ ๋ค๋ฅธ ์ฐธ๊ฐ์๋ถ๊ป์ ํ ์คํธ ๋ฉ์๋ ๋ค์ด๋ฐ๊ณผ ๊ด๋ จํ์ฌ ์ข์ ์๋ฃ๋ฅผ ์ฌ๋ ค์ฃผ์ ๊ฒ์ ํ์ธํ๊ณ , ์ด๋ฅผ ํตํด ํ ์คํธ ์ฝ๋ ์ญ์๋ ๋ค์ด๋ฐ ๊ท์น์ด ํ์ํ๋ค๋ ๊ฒ์ ์ฒด๊ฐํ๊ณ ์ ์ฉํด๋ดค์ต๋๋ค. ๋ํ, ๋ฐ๋ณต์ ์ธ ์ฝ๋๋ฅผ ์ค์ด๊ธฐ ์ํ์ฌ @ParameterizedTest ๋ฅผ ์ด์ฉํ์ต๋๋ค.
๐ 4์ฃผ๊ฐ์ ํ๋ฆฌ์ฝ์ค๋ฅผ ๋ง์น๋ฉฐ
ํ๋ง๋๋ก ์์ถํ๋ค๋ฉด ์ฝ๋ฉ์ ์ฝ์ดํ์ ๊ธฐ๋ฅธ ๊ฒ ๊ฐ์ต๋๋ค.
ํ๋ฆฌ์ฝ์ค ์ด์ ์ ์ ๋
1. ์ข์ ์ฝ๋๋ ๋ฌด์์ผ์ง ์ ์๊ฐ ์์์ต๋๋ค.
2. ๊ณ ๋ฏผํ๋ ํ์ด ์์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ๋ฆฌ์ฝ์ค๋ฅผ ํตํด์ ์ข์ ์ฝ๋์ ๋ํ ๊ธฐ์ค์ด ์๊ธฐ๊ณ ๊ฐ๋งํ ์์ ๋์ ์ฝ๋๋ฅผ ๋ค์ฌ๋ค๋ณด๋ฉฐ ๋ฌธ์ ์ ์ ํ์ ํ๊ณ ์ ํ๋ ์ข์ ์ต๊ด์ด ๋ค์์ต๋๋ค. ๋ฌดํฑ๋๊ณ ์ฝ๋๋ฅผ ์ง๋ ์ ๋, ๋งค์ฃผ ๊ธฐ๋ฅ ๊ตฌํ ์ฌํญ๋ค์ ์ ๋ฆฌํ๊ณ ์ด๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ํด๊ฒฐํด ๋๊ฐ๋ฉฐ ์ฒด๊ณ์ ์ธ ๊ณํ๊ณผ ์ค์ฒ์ด ์ค์ํ๋ค๋ ๊ฒ์ ๊นจ๋ฌ์์ต๋๋ค. ๋ํ ์ฝ๋๋ฅผ ์ด๋ ์ ๋ ์ง๊ณ ๋ ๋ค์๋ ํ ๋ฐ์น ๋ฌผ๋ฌ๋์ ๋ฉ์๋, ํด๋์ค๊ฐ์ ๊ฒฐํฉ๋์ ๋ค์ด๋ฐ, ๋ณ์๋ช , ์์๋ก ์ด๋ค ๊ฒ๋ค์ ๋นผ์ผ ํ ์ง, ์บก์ํ๊ฐ ์ ์ค์ฒ๋์ด ์๋์ง ๋ฑ์ ๊ณ ๋ฏผํ๋ ์ฌ๋์ด ๋์์ต๋๋ค. ๋ํ ์๊ตฌ์ฌํญ๊ณผ ์ ํ์ฌํญ์ด ๋ช ํํ ์ํฉ ์์์ ์ด๋ฅผ ์ ๋ ํ๋ฉฐ ์ฝ๋๋ฅผ ์ง์ผ ํ๋ค๋ ์์์ด ์๊ธฐ๊ฒ ๋์์ต๋๋ค. ์๊ตฌ์ฌํญ๊ณผ ์ ํ ์ฌํญ์ด ๋ช ํํ ๊ฒ์ ์ด๋ ค์์ ์ฃผ๊ธฐ๋ ํ์ง๋ง, ๊ทธ ์ ํ ์์์ ๋์ ํ๊ณ๋ฅผ ๊ฒฝํํด๋ณด๊ณ ๋ ๋์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ ๋ฏผํ๊ฒ ํ์ต๋๋ค.
์ ๊ฐ ์ด๋ฌํ 4์ฃผ๊ฐ์ ํ๋ฆฌ์ฝ์ค์ ๊ณผ์ ์์ ํฐ ๋ฐฐ์๊ณผ ๊นจ๋ฌ์์ ์ป์ ์ ์์๋ ๊ฒ์ ํจ๊ป ์ฐธ์ฌํ๋ ๋ถ๋ค ๋๋ถ๋ ํฌ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฐ์ ์๊ตฌ์ฌํญ๊ณผ ์ ํ์ฌํญ ์์์ ํ์ํ๋ ์ฐธ๊ณ ํ ๋งํ ๋ค์ํ ์ฝ๋๋ค์ ํตํด ๋์ ์ฝ๋์ ๋ํด์๋ ๋์๋ณด๊ณ , ๋ค๋ฅธ ์ฝ๋๋ค์ ํ์ตํ๋ฉด์๋ ๋ ๋ง์ด ์ฑ์ฅํ ์ ์์์ต๋๋ค. ๋ํ, discussion ์ด๋ slack ์ ํตํด์ ์ข์ ์ฐธ๊ณ ์๋ฃ๋ค์ ๊ณต์ ํด์ฃผ์๋ ๋ถ๋ค ๋๋ถ์๋ ๋ ๋์ ๋ฐฉํฅ์ผ๋ก์ ์ฑ์ฅ์ด ๊ฐ๋ฅํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ๋ฆฌ์ฝ์ค๋ฅผ ํตํด ํ์ฑํ ์ข์ ์ต๊ด๋ค์ ์ ์ ์์ผ๋ก์ ์ฝ๋ฉ ์ํ์๋ ๊ณ์ ์ด์ด๋๊ฐ๊ณ ์ถ์ต๋๋ค.