๋ฐ์—”์œผ๋กœ ์„ฑ์žฅ์ค‘ ๐ŸŒฑ

์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค 5๊ธฐ ๋ฐฑ์—”๋“œ ํ”„๋ฆฌ์ฝ”์Šค

[์šฐํ…Œ์ฝ” 5๊ธฐ ํ”„๋ฆฌ์ฝ”์Šค] 3์ฃผ์ฐจ: ๋กœ๋˜

์จ๋ฐ 2022. 11. 17. 18:59

2์ฃผ ์ฐจ ๋ฏธ์…˜์ด ๋๋‚˜๊ณ , 2์ฃผ ์ฐจ ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด ๋‚ด๊ฐ€ ์ง€์ผœ์•ผ ํ•  ๊ฒƒ๋“ค์„ ์ž˜ ์ง€์ผœ์„œ ์ง„ํ–‰ํ–ˆ๋Š”์ง€ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์‚ฌ์‹ค ํ•™๊ต์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์ž๋ฐ” ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ Junit์„ ํ†ตํ•œ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค๋ฃจ์–ด ๋ณธ ์ ์ด ์žˆ์—ˆ๋‹ค.

๊ทธ๋•Œ์˜ ๋‚˜๋Š” ํ…Œ์ŠคํŒ…์„ ์™œ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์ž˜ ๋ชฐ๋ž์—ˆ๋‹ค. ๊ทธ๋ƒฅ ๋ง‰์—ฐํ•˜๊ฒŒ ํ•˜๋ผ๊ณ  ํ–ˆ์œผ๋‹ˆ๊นŒ ํ…Œ์ŠคํŒ…์„ ์ง„ํ–‰ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

 

๊ต์ˆ˜๋‹˜๊ป˜์„œ ํ…Œ์ŠคํŒ…๊ณผ ๊ฐ™์ด ์œ ์ง€๋ณด์ˆ˜์— ๋Œ€ํ•œ ์ค‘์š”์„ฑ์„ ์–ธ๊ธ‰ํ•˜์…จ์—ˆ๋Š”๋ฐ, ์ •๋ง ์šฐํ…Œ์ฝ”์˜ ๋ฏธ์…˜๋“ค์„ ์ง„ํ–‰ํ•ด๋ณด๋‹ˆ ๊ต์ˆ˜๋‹˜์˜ ๋ง์”€์ด ํ™• ์™€๋‹ฟ์œผ๋ฉด์„œ ์‹ค๊ฐ์ด ๋‚ฌ๋‹ค.

 

์ง„์ง€ํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด, ์ด๋ฒˆ 3์ฃผ ์ฐจ ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•œ ๊ณผ์ •๊ณผ ํ•จ๊ป˜ ์ ์–ด๋ณด๋ ค ํ•œ๋‹ค.


3์ฃผ ์ฐจ ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๊ธฐ ์•ž์„œ, 2์ฃผ ์ฐจ ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” '์ˆซ์ž ์•ผ๊ตฌ with ์ž๋ฐ” ๊ธฐ์ดˆ ๊ฐ•์˜'๋ฅผ ๊ผญ ๋“ค์–ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

์ž๋ฐ”๊ฐ€ ์™„์ „ ์ฒ˜์Œ์€ ์•„๋‹ˆ์ง€๋งŒ ๊ธฐ์ดˆ ๊ฐœ๋…์— ๋Œ€ํ•ด ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋ช…๋ฃŒํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์—†์„ ๋งŒํผ ์ž๋ฐ”์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ๋ถˆ์•ˆ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์˜ˆ์ „๋ถ€ํ„ฐ ํ•œ ๋ฒˆ์ฏค ์ด๋Ÿฐ ์ž๋ฐ” ๊ธฐ์ดˆ ๊ฐ•์˜๋ฅผ ๊ผญ ๋“ค์–ด๋ณด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ.

๋‚ด๊ฐ€ ์ง์ ‘ ๋‹ค๋ฃจ๊ฒŒ ๋œ ๋ฏธ์…˜๊ณผ ํ•จ๊ป˜ ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ์ด๋ ‡๊ฒŒ ์ข‹์€ ๊ธฐํšŒ๋ฅผ ๋†“์น  ์ˆ˜ ์—†์—ˆ๋‹ค.

 

์ž๋ฐ”์˜ ๊ธฐ์ดˆ ๊ฐœ๋…์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๊ณ , ๊ฐ์ฒด ์ง€ํ–ฅ์— ๋Œ€ํ•œ ์˜๋ฏธ๋ฅผ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด ์ฃผ์…”์„œ ์ •๋ง ์ข‹์•˜๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

๋˜ํ•œ, domain ์ด ๋ฌด์—‡์ธ์ง€๋„ ํ•จ๊ป˜ ์„ค๋ช…ํ•ด์ฃผ์…”์„œ ์ด๋ฒˆ ๋ฏธ์…˜์— ์ ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋‚˜๋„ ์ด์ œ ์ €๋ฒˆ ์ฃผ ๋ณด๋‹ค ๋” ๋‚˜์€ ๋‚ด๊ฐ€ ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ , ์•ฝ๊ฐ„์˜ ์ž์‹ ๊ฐ์„ ๊ฐ–๊ณ  3์ฃผ ์ฐจ ๋ฏธ์…˜ ์ˆ˜ํ–‰์— ๋“ค์–ด๊ฐ”๋‹ค.


๋จผ์ €, ๊ธฐ๋Šฅ ๋ชฉ๋ก๋ถ€ํ„ฐ ์ž‘์„ฑํ–ˆ๋‹ค.

๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ๋„ˆ๋ฌด ์ƒ์„ธํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ , ํ™•์‹คํ•˜๊ฒŒ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๊ธฐ๋Šฅ ๋ชฉ๋ก๊ณผ ์˜ˆ์™ธ ์ƒํ™ฉ์— ๋Œ€ํ•ด์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์ž‘์„ฑํ–ˆ๋‹ค.

(๊ธฐ๋Šฅ ๋ชฉ๋ก์˜ ์ˆ˜์ •์€, ์–ธ์ œ๋“  ํ•„์š”ํ•  ๋•Œ ์ˆ˜์ •ํ•˜๋ฉด ๋˜๋‹ˆ๊นŒ!)

 

๊ทธ ํ›„, Lotto ํด๋ž˜์Šค๋ฅผ ๋ณด๋ฉด์„œ ๋กœ๋˜๋ฅผ ๋ฐœ๊ธ‰ํ•ด ์ฃผ๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

// Lotto ํด๋ž˜์Šค
public class Lotto {
    private final List<Integer> numbers;

    public Lotto(List<Integer> numbers) {
        numbers = Randoms.pickUniqueNumbersInRange(1, 45, 6);
        validate(numbers);
        this.numbers = numbers;
    }
}

// Application ํด๋ž˜์Šค
public class Application {
    public static void main(String[] args) {
        inputPrint();
        String inputMoney = Console.readLine();
        int lottoCount = Lotto.calculate(inputMoney);
        countPrint(lottoCount);

        for(int i = 0; i < lottoCount; i++){
            List <Integer> numbers = new ArrayList<>();
            Lotto lotto = new Lotto(numbers);
        }
    }
}

 

Lotto์˜ ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์˜ ์ ‘๊ทผ ์ œ์–ด์ž์— ๋Œ€ํ•ด ๊ตฌ์†๋ฐ›๊ฒŒ ๋˜๋‹ˆ๊นŒ, ์–ด๋–ป๊ฒŒ๋“  ๊ฐ–๋‹ค ์“ฐ๋ ค๊ณ  ๊ผผ์ˆ˜๋ฅผ ์“ฐ๊ฒŒ ๋˜์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

(์ด๋•Œ๋ฅผ ๊ธฐ์ ์œผ๋กœ, ์—„์ฒญ๋‚œ ์Šค๋…ธ์šฐ๋ณผ์ด ๊ตด๋ ค๊ฐ€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๋ฐ˜์„ฑํ•˜์ž...)

๋กœ๋˜๋ฅผ ํ•˜๋‚˜์”ฉ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด, ์ €๋Ÿฐ ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ํ•˜๋‚˜๋‘˜์”ฉ, Lotto ํด๋ž˜์Šค์— ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋“ค์ด ์ฆ๋น„ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.

๋กœ๋˜ ๊ตฌ์ž… ๋ฒˆํ˜ธ ๋ฆฌ์ŠคํŠธ๋“ค์„ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ์™€ ๊ตฌ์ž… ๊ธˆ์•ก์— ๋Œ€ํ•œ ๋กœ๋˜ ๊ตฌ์ž… ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋“ฑ...

 

๋‚˜์ค‘์— ํด๋ž˜์Šค ๋ฐ ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ ์ •๋„์˜ ๋ฆฌํŒฉํ„ฐ๋ง๋งŒ ํ•˜๋ฉด ๋  ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๊ณ , ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋‘๊ณ  ์ง„ํ–‰ํ–ˆ๋‹ค. (์ด ๋˜ํ•œ, ์ž˜๋ชป๋œ ํŒ๋‹จ์ด์—ˆ๊ฑฐ๋Š˜...)

 

๊ทธ ํ›„, ๋‹น์ฒจ ๋ฒˆํ˜ธ์— ๊ด€ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ Winning ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ๋ฐœ๊ธ‰ํ•œ ๋กœ๋˜ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” Compare ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

 

๊ธฐ๋Šฅ ์ž์ฒด๋Š” ๋‚˜๋ฆ„ ์›ํ™œํžˆ ๋Œ์•„๊ฐ”๋‹ค.

(๊ธ€์„ ์“ฐ๋ฉด์„œ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋Š”๋ฐ, ์ž˜ ๋Œ์•„๊ฐ€๋Š” ๊ฒŒ ๋‹น์—ฐํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๋‚œ ์ž์œ ๋ถ„๋ฐฉํ•˜๊ฒŒ ๋‚ด ๋ฐฉ์‹๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์งฐ์œผ๋‹ˆ ๊ทœ์น™๊ณผ ๊ฐ™์€ ํฐ ๊ฑธ๋ฆผ๋Œ์ด ์—†์—ˆ๋˜ ๊ฒƒ์ด๊ฒ ์ง€... ๋”ฐ์ง€๊ณ  ๋ณด๋ฉด, ์‚ฌ์‹ค ์ด๊ฒƒ๋„ ์ž˜ ๋Œ์•„๊ฐ€๋Š” ์ฒ™ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์ง€๋งŒ...๐Ÿ˜…)

 

 

๊ทธ๋ฆฌ๊ณ , ๊ธฐ๋Šฅ ๋ชฉ๋ก๊ณผ ํ•จ๊ป˜ ์ถ”๊ฐ€๋œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ญ‰ ๋ณด๋‹ค ๋ณด๋ฉด Enum์„ ์ ์šฉํ•˜๋ผ๊ณ  ์ ํ˜€์žˆ๋‹ค.

Enum์— ๋Œ€ํ•ด ๋ณธ ์ ์€ ์žˆ๋Š” ๊ฑฐ ๊ฐ™์€๋ฐ, ๊ฐœ๋… ๋ฐ ์ ์šฉ ๋ฐฉ๋ฒ•๋„ ๋ชฐ๋ผ์„œ ์˜ค๋Š˜๋„ ๋‚˜์˜ ์„ ์ƒ๋‹˜, ๋ชจ๋‘์˜ ์„ ์ƒ๋‹˜์ธ ๊ตฌ๊ธ€๋‹˜์—๊ฒŒ ๋„์›€์„ ์š”์ฒญํ–ˆ๋‹ค.

 

 

์ž๋ฐ” Enum ๊ธฐ๋ณธ ๋ฐ ํ™œ์šฉ

์šฐ์•„ํ•˜๊ฒŒ Enum ์จ ๋ณด์ž… ์‹œ๋” ํ—ˆํ—ˆ,,^^

velog.io

 

ํ•ด๋‹น ์ •๋ฆฌ ๊ธ€์„ ๋ณด๋ฉด์„œ, ์ž๋ฐ”์˜ Enum์„ ๊ฐ€์žฅ ์ ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•œ ํด๋ž˜์Šค๋Š” ๋กœ๋˜ ๋“ฑ์ˆ˜์— ๋”ฐ๋ฅธ ๋‹น์ฒจ ๊ธˆ์•ก์„ ์„ ์ •ํ•˜๋Š” ํด๋ž˜์Šค๋ผ๊ณ  ์ƒ๊ฐํ•˜์—ฌ Rank ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ , ๋‹น์ฒจ ํ†ต๊ณ„ ๋‚ด์—ญ์— ๋Œ€ํ•œ Report ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

 

(์‚ฌ์ง„์€ ์•„์ง ๋กœ๋˜ ๋ฐœ๊ธ‰์‹œ, ๋ฒˆํ˜ธ ์ •๋ ฌ๊ณผ ์ˆ˜์ต๋ฅ  ๊ฒฐ๊ณผ๋ฅผ ๋„ฃ์ง€ ์•Š์•˜์„ ๋•Œ๋‹ค.)

์ž, ๊ธฐ๋Šฅ ์ž์ฒด๋Š” ์ž˜ ๋Œ์•„๊ฐ€๋Š” ๋“ฏ ๋ณด์ธ๋‹ค.

์ด์ œ ์ถ”๊ฐ€์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ, ๋‚ด๊ฐ€ ๋งŒ๋“  ๋ฉ”์„œ๋“œ๋“ค์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค.

 

์ž, ์ฃผ์–ด์ง„ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ฌธ์ œ์—†์ด ์ž˜ ๋Œ์•„๊ฐ„๋‹ค๋ฉด ๊ณ„ํš๋Œ€๋กœ ํ˜๋Ÿฌ๊ฐ„๋‹ค...!

 

์•—... ๋งํ–ˆ๋‹คใ…‹ใ…‹

๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ์ž˜ ํ†ต๊ณผ๊ฐ€ ๋˜๋Š”๋ฐ, ์™œ ์˜ˆ์™ธ ํ…Œ์ŠคํŠธ๋Š” ํ†ต๊ณผ๊ฐ€ ์•ˆ๋˜์ง€?

์˜ˆ์™ธ ๋ฉ”์‹œ์ง€๋„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋œจ๊ณ  1, 2์ฃผ ์ฐจ ์ฝ”๋“œ์™€ ๋˜‘๊ฐ™์€๋ฐ ๋ญ๊ฐ€ ๋ฌธ์ œ์ผ๊นŒ???

 

์ž, ์—ฌ๊ธฐ์„œ ์Šค๋…ธ์šฐ๋ณผ ํฌ๊ฒŒ ๊ตด๋Ÿฌ์™€์„œ ํ•œ ๋ฐฉ ๋งž์•˜๋‹ค.ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹(๋งˆ์น˜ ๊ทน๋”œ ๋ˆ„๋ˆ„ ๋ˆˆ๋ฉ์ด ์ตœ๋Œ€ ๋Œ€๋ฏธ์ง€๋กœ ๋งž์€ ๋А๋‚Œ......... )

(๋ˆˆ ๊ตด๋Ÿฌ๊ฐ€์œ ~)

์ง„์งœ ์˜ค๋ž˜ ๊ณ ๋ฏผํ•œ ๋์—(๊ฒฐ๊ตญ ์—ฌ๊ธฐ์„œ ๋ฉ˜ํƒˆ ๋˜ ํ„ฐ์ง...ใ…‹ใ…‹), ๊ธฐ๋Šฅ์€ ์ž˜ ํ†ต๊ณผ๊ฐ€ ๋˜๋‹ˆ๊นŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ๋ฌธ์ œ์ผ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ–ˆ๋‹ค.

ํ˜น์‹œ throw๋กœ ๋ฐ”๋กœ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, try catch๋ฅผ ์ผ์ผ์ด ์ ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ผ๊นŒ?๋ผ๋Š” ์ƒ๊ฐ์„ ์ž ๊น ํ–ˆ์—ˆ๋Š”๋ฐ, ์ด๊ณณ์— ์‹ค๋งˆ๋ฆฌ๊ฐ€ ์žˆ์—ˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ , ๋‚˜๋Š” ๊ทธ๋ƒฅ throw์™€ try catch์˜ ์ฐจ์ด๋ฅผ ์ •ํ™•ํžˆ ์•Œ์ง€ ๋ชปํ•˜๊ณ  ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

๋‚˜๋Š” ๋‹จ์ˆœํžˆ ์ด ๋‘˜์˜ ์ฐจ์ด๋Š”, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๋ฐฉ์‹๋งŒ ๋‹ค๋ฅผ ๋ฟ ํ•˜๋Š” ์ผ์€ ๊ฐ™์€ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜, throw๋Š” ์˜ˆ์™ธ๋ฅผ ๋˜์ ธ์ค„ ๋ฟ, ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์ง€๋Š” ์•Š๋Š” ๊ฒƒ์ด์—ˆ๊ณ , try catch๋Š” catch ๋ถ€๋ถ„์—์„œ ์˜ˆ์™ธ๋ฅผ ๋ฐ›์•„ ์ฒ˜๋ฆฌ๊นŒ์ง€ ์ง„ํ–‰ํ•œ๋‹ค.

// Application Class
public static void main(String[] args) {
	try {
		// (์ƒ๋žต)
	} catch (IllegalArgumentException e) {
		System.out.println(ERROR_MESSAGE + e.getMessage());
	}
}

๋‚ด ๋ฌธ์ œ์ ์€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ธฐ๋งŒ ํ•˜๊ณ , ๋๋‚ด ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค.

 

์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š”, main ๋ฉ”์„œ๋“œ์—์„œ try catch๋ฅผ ํ†ตํ•ด ์˜ˆ์™ธ๋ฅผ ์ตœ์ข… ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•˜์ž.

 

๋“œ๋””์–ด, ๋‚  ๊ณ ํ†ต์Šค๋Ÿฝ๊ฒŒ ํ•˜๋˜ ๊ด€๋ฌธ์„ ํ•˜๋‚˜ ๋ถ€์‰ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰, ์ฃผ์–ด์ง„ LottoTest ํ…Œ์ŠคํŒ…!

์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋Š” ํ•ด์คฌ์œผ๋‹ˆ, ๋‹น์—ฐํžˆ ๋Œ์•„๊ฐ€๊ฒ ์ง€...?! ํ–ˆ์ง€๋งŒ..

 

๋˜ ๋งˆ์ฃผํ•˜๊ฒŒ ๋œ ๋…ธ๋ž€์ƒ‰ X...

 

๋‚œ ์—ฌ๊ธฐ์„œ ๊ทธ๋งŒ๋‘๊ณ  ์‹ถ๊ธฐ๋„ ํ•˜๊ณ  ํ˜„ํƒ€๋„ ์˜ค๊ณ  ์ขŒ์ ˆํ•˜๊ณ  ๋ง์•˜๋‹ค.

๋งˆ๊ฐ ๋‹น์ผ ์•„์นจ์ธ ๋ฐ๋‹ค๊ฐ€ ์–ด์ œ๋„ ๊ทธ ๊ณ ์ƒ์„ ํ–ˆ๋Š”๋ฐ, ์˜ค๋Š˜๋„ ๊ณ ํ†ต ์‹œ์ž‘์ด๋ผ๋‹ˆ...

 

๊ทธ๋ž˜๋„, ํฌ๊ธฐํ•˜๊ธฐ๋Š” ๋˜ ์‹ซ์–ดํ•˜๋Š” ์„ฑ๊ฒฉ์ด๋ผ ๋๊นŒ์ง€ ๋ถ™์žก๊ณ  ๊ณ ๋ฏผํ•˜๊ณ  ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผ ํ• ์ง€ ์—ด์‹ฌํžˆ ์ฐพ์•„๋ดค๋‹ค.

 

๋‚˜๋Š” ์ •๋ง ๋น„ํšจ์œจ์ ์ด๊ณ , ์ž˜๋ชป๋œ ์ ‘๊ทผ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค.

 

๋กœ๋˜ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์€ ์ƒ์„ฑ์ž์—์„œ ๋ฐ”๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›์€ ํ›„ Lotto ๊ฐ์ฒด ๋‹ด๋„๋ก ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•ด์•ผ ํ–ˆ๋‹ค.

// Lotto Class
public static List<Lotto> createLotto(int number) {
	List<Lotto> allLotto = new ArrayList<>();
	for (int i = 0; i < number; i++) {
		allLotto.add(new Lotto(Randoms.pickUniqueNumbersInRange(1, 45, 6)));
	}
	return allLotto;
}

๊ตณ์ด ์ด์ค‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํ•˜๋‚˜ํ•˜๋‚˜ ์ ‘๊ทผํ•  ํ•„์š” ์—†์ด, Lotto ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

 

๊ทธ ํ›„, ๋‚ด๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ์™€ ํ•จ๊ป˜ ์ „์ฒด ํ…Œ์ŠคํŒ…์„ ๋Œ๋ ค๋ณด์•˜๋‹ค.

 

๋‹คํ–‰ํžˆ, LottoTest ๊ฐ€ ๊น”๋”ํžˆ ๋ฌธ์ œ์—†์ด ์ง„ํ–‰๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์–ด๋ผ, ๋ถ„๋ช… ์•„๊นŒ ์ž˜ ๋Œ์•„๊ฐ€๋Š” ๊ฑธ ํ™•์ธํ–ˆ๋˜ ApplicationTest ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๊ฐ€ ์™œ ํ†ต๊ณผ๊ฐ€ ์•ˆ๋˜์ง€??? ๋ญ”๊ฐ€ ๋ถ„๋ช…ํžˆ ์ž˜๋ชป๋˜์—ˆ๋‹ค.ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹

 

๊ทธ๋ž˜์„œ ๋”ฐ๋กœ ๋Œ๋ ค๋ณด๋‹ˆ, ์›ฌ ๊ฑธ? ๋˜ ๋”ฐ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋ฌธ์ œ์—†์ด ํ…Œ์ŠคํŠธ๊ฐ€ ์ž˜ ํ†ต๊ณผ๋˜์—ˆ๋‹ค.

 

๋”ฐ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„, ์•„ ํ…Œ์ŠคํŠธ๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ๋Œ๋ฉด์„œ ๋ญ”๊ฐ€ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์ง€ ์•Š๊ณ  ์ง„ํ–‰๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค๋Š” ๋А๋‚Œ์ด ํŒ ์™”๋‹ค.

 

๋‹น์ฒจ ๋ฒˆํ˜ธ์™€ ๋‹น์ฒจ ๊ฒฐ๊ณผ์˜ ์ˆ˜๊ฐ€ ๊ณ„์† ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ์ด์—ˆ๋‹ค.

(์•„๋งˆ, ๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์›์น™์„ ์ž˜ ์ง€์ผฐ๋‹ค๋ฉด ๋”ฐ๋กœ ์ง์ ‘์ ์ธ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด์ฃผ์ง€ ์•Š๋”๋ผ๋„ ๊น”๋”ํžˆ ์‹คํ–‰๋˜์—ˆ์„ ๊ฒƒ์ด๋‹ค.)

 

๋‹คํ–‰ํžˆ ๋‚ด ์ง๊ฐ์€ ๋“ค์–ด๋งž์•˜๊ณ  ๋น ๋ฅด๊ฒŒ ๋ฌธ์ œ์ ์„ ์บ์น˜ํ•˜์—ฌ ์ˆ˜์ •ํ•˜์˜€๋‹ค.

 

์•Œ๊ณ  ๋ณด๋‹ˆ, ์ •๋ง ์ด ํ˜„์ƒ์ด ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋œ ์›์ธ์€ ์ดˆ๊ธฐํ™”๊ฐ€ ์•ˆ๋œ ๊ฒƒ.

์ฆ‰, ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ์ด ๋งž์•˜๊ณ  ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด @BeforeEach์ด๋‹ค.

์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ Test ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ธฐ ์ „์— ๋งค๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜์ž.

 

์šฐ์—ฌ๊ณก์ ˆ ๋์—, ๋“œ๋””์–ด ์ตœ์ข…์ ์œผ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.

 

๋งŒ์•ฝ ์ด๋Ÿฐ ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์ง€ ์•Š์•˜๋”๋ผ๋ฉด, ๋‚ด ์ฝ”๋“œ๊ฐ€ ์–ด๋””๊ฐ€ ๋ถ€์กฑํ•˜๊ณ  ์–ด๋””๊ฐ€ ์ž˜๋ชป ๊ตฌํ˜„๋˜์—ˆ๋Š”์ง€ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„์„œ ์‹œ๊ฐ„ ๋‚ด์— ์ˆ˜์ •ํ•  ์ˆ˜ ์—†์—ˆ์„ ๊ฒƒ์ด๋‹ค.

 

์œ ๋‹› ํ…Œ์ŠคํŠธ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ์™„๋ฒฝ์„ฑ์„ ๋ณด์žฅํ•ด์ฃผ์ง€๋Š” ๋ชปํ•˜์ง€๋งŒ, ๋ฆฌํŒฉํ„ฐ๋ง๊ณผ ๊ฐ™์€ ์œ ์ง€๋ณด์ˆ˜ ๊ณผ์ •์—์„œ ์ •๋ง ์ข‹์€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

 

๊ทธ๋ ‡๊ฒŒ ๋‚˜๋Š” ์ตœ์ข… ์ œ์ถœ์„ ์™„๋ฃŒํ–ˆ๋‹ค.


(์–ด...? ์™œ ๋˜ ๊ตด๋Ÿฌ์˜ค๋‚˜์š”...?)

์‚ฌ์‹ค, ์ค‘๊ฐ„์— ๊ทธ๋งŒ๋‘๊ณ  ์‹ถ์„ ์ •๋„๋กœ ๋ฉ˜ํƒˆ์ด ํฌ๊ฒŒ ํ”๋“ค๋ฆฐ ์ด์œ ๊ฐ€ ํ•˜๋‚˜ ๋” ์žˆ๋‹ค.

๋‚ด๊ฐ€ ๊ฒช์—ˆ๋˜ ๋ฌธ์ œ์ ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์—ฌ๋Ÿฌ ์šฐํ…Œ์ฝ” ํ…Œํฌ ๋ธ”๋กœ๊ทธ๋‚˜ ๊ด€๋ จ ์ž๋ฃŒ๋“ค์„ ๋ณด๋‹ค ๋ณด๋‹ˆ, ๋‚ด๊ฐ€ ๊ทธ๋™์•ˆ ๊ตฌํ˜„ํ•œ ๋ฐฉ์‹์€ ์ •๋ง ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

1, 2์ฃผ ์ฐจ๊ฐ€ ์ง€๋‚ฌ๊ณ  3์ฃผ ์ฐจ๋„ ์ด์ œ ๋์ธ๋ฐ, ๋‚˜๋Š” ๊ทธ๋™์•ˆ ์ถœ๋ ฅ๊ณผ ๊ด€๋ จํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ๋”ฐ๋กœ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ฐ–์—๋„ ๋ฌธ์ œ์ ์€ ์ˆ˜๋‘๋ฃฉ ํ•  ๊ฒƒ์ด๋‹ค.

 

ํฌ๋ฃจ์› ๋ถ„๋“ค์ด ํ™œ๋™ํ•˜์‹œ๋Š” Slack๊ณผ Github ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ TDD, MVC ํŒจํ„ด์˜ ์–ธ๊ธ‰ ์ด์œ ๋ฅผ ์ด์ œ์•ผ ์•Œ๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค.

(์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ํž˜๋„ ๋Š˜ ๋А๋ผ์ง€๋งŒ ์ •๋ง ์œ ์šฉํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์—ญ์‹œ ์ง‘๋‹จ์ง€์„ฑ์˜ ํž˜!)

 

ํ•˜์ง€๋งŒ ์ด๋ฅผ ์ ์šฉํ•ด๋ณด๊ธฐ์—๋Š”, 3์ฃผ ์ฐจ ๋งˆ๊ฐ ํ•˜๋ฃจ ์ „์—์„œ์•ผ ์•Œ๊ฒŒ ๋˜์—ˆ๋˜ ๋ถ€๋ถ„์ด๊ณ , ์ตœ๋Œ€ํ•œ ์กฐ๊ธˆ์ด๋ผ๋„ ์•Œ๊ฒŒ ๋œ ๊ฒƒ์„ ์ ์šฉํ•ด๋ณด์ž! ํ•ด์„œ ์ถœ๋ ฅ๊ณผ ๊ด€๋ จํ•œ ๊ฒƒ์€ View๋กœ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์ฃผ๋Š” ๋“ฑ... ๋…ธ๋ ฅ์€ ํ–ˆ์ง€๋งŒ, ๋งŽ์ด ๋ฏธํกํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

๊ทธ๋™์•ˆ์€ ๋‹จ์ˆœํžˆ, '๊ตฌํ˜„์„ ์–ด๋–ป๊ฒŒ๋“  ํ•ด์„œ ์™„์„ฑํ•ด๋‚ด์ž'๊ฐ€ ๋ชฉ์ ์ด ๋œ ๊ฒƒ ๊ฐ™์•˜๋‹ค.

 

์–ด์ฐŒ ๋ณด๋ฉด ๋ฏธ์…˜ ์ œ์ถœ์ด๋ผ๋Š” ๊ฒƒ๋„ ๋ชฉ์ ์ด๋‹ˆ, ๊ตฌํ˜„์„ ์–ด๋–ป๊ฒŒ๋“  ํ•ด์„œ ๋‚ด๋Š” ๊ฒŒ ๋งž๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๋‚ด๊ฐ€ ์ด ์ฝ”์Šค์— ์‹ ์ฒญํ•œ ์ด์œ ์— ๋Œ€ํ•ด ๋‹ค์‹œ๊ธˆ ์ƒ๊ฐํ•ด๋ณด๋ฉด์„œ ๋‚ด๊ฐ€ ์™œ ์‹œ๊ฐ„์„ ํˆฌ์žํ•˜๋ฉด์„œ ์ด๋ ‡๊ฒŒ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ง„์ง€ํ•˜๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค.

 

์Šค์Šค๋กœ ๋ฐฐ์šฐ๊ณ  ์„ฑ์žฅํ•ด ๋‚˜์•„๊ฐ€๋Š” ๊ฒƒ์ด ๋‚˜์˜ ๋ชฉํ‘œ์ด์ž, ๋ฌด์Šจ ์ผ์ด ์žˆ์–ด๋„ ๋‚ด ์ž์‹ ์—๊ฒŒ ์ฑ…์ž„์„ ๋‹คํ•˜๋Š” ๊ฒƒ!

๋ˆ„๊ตฌ๋‚˜ ์ž˜๋ชป๋œ ๋ฐฉํ–ฅ์œผ๋กœ ์ ‘๊ทผ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๊ณ , ๊นจ๋‹ฌ์€ ๊ฒŒ ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์œผ๋กœ ์„ฑ์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋‚˜๋„ ํฌ๋น„๋‹˜์ฒ˜๋Ÿผ ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ์ด๋Ÿฐ ๊ฒฝํ—˜๊ณผ ๋ฐฐ์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ๋˜๊ณ  ์‹ถ๋‹ค.

 

์ด๋ฒˆ 4์ฃผ ์ฐจ ๋ฏธ์…˜์—๋Š”, ๋‚ด๊ฐ€ ๋†“์ณค๋˜ ๋ถ€๋ถ„๊ณผ ๋ฏธํกํ•œ ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•œ ํ•™์Šต์„ ์ถ”๊ฐ€์ ์œผ๋กœ ์ง„ํ–‰ํ•ด์„œ, ์ง€๋‚œ ๋ฏธ์…˜๋“ค ๋ณด๋‹ค ๋” ์„ฑ์žฅํ•œ ๋‚˜์˜ ๋ชจ์Šต์„ ๋ณด์—ฌ๋“œ๋ฆฌ์ž!

 

 

GitHub - Lee-SungMin/java-lotto: ๋กœ๋˜ ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๋Š” ์ €์žฅ์†Œ

๋กœ๋˜ ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๋Š” ์ €์žฅ์†Œ. Contribute to Lee-SungMin/java-lotto development by creating an account on GitHub.

github.com