๐์ฝ์ ์ฑ ์ ๋ฆฌ (39) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [์๋ฐ ์ฝ๋ฉ์ ๊ธฐ์ ] 6์ฅ : ์ฌ๋ฐ๋ฅด๊ฒ ๋๋ฌ๋ด๊ธฐ 6.1 Given-When-Then์ผ๋ก ํ ์คํธ ๊ตฌ์กฐํ JUnit์ ์๋ฐ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ ์ํ์ง ์์ง๋ง ์๋ฐ์์ ๋จ์ ํ ์คํธ ์์ฑํ๋ ์ฌ์ค์์ ํ์ค์ด๋ค. ๋ฉ์๋์ @Test๋ง ์ถ๊ฐํ๋ฉด JUnit์ด ์์์ ํ ์คํธ๋ก ์คํํ๋ค. ๋ฌธ์ ์ฝ๋ @Test void setPlanetarySpeedIs7667() { CruiseControl cruiseControl = new CruiseControl(); cruiseControl.setPreset(SpeedPreset.PLANETARY_SPEED); Assertions.assertTrue(7667 == cruiseControl.getTargetSpeedKmh()); } ์ ํ ์คํธ๋ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ข ๋ ์ฝ๋๋ฅผ ๊ตฌ์กฐํํ์ฌ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ฐ๊ฟ ์๋ ์.. [์๋ฐ ์ฝ๋ฉ์ ๊ธฐ์ ] 5์ฅ : ๋ฌธ์ ๋ฐ์์ ๋๋นํ๊ธฐ 5.1 ๋น ๋ฅธ ์คํจ ๋ฌธ์ ์ฝ๋ class CruiseControl { static final double SPEED_OF_LIGHT_KMH = 1079252850; static final double SPEED_LIMIT = SPEED_OF_LIGHT_KMH; private double targetSpeedKmh; void setTargetSpeedKmh(double speedKmh) { if (speedKmh < 0) { throw new IllegalArgumentException(); } else if (speedKmh ๊ฐ์ฅ ๊ตฌ์ฒด์ ์ธ ์์ธ๋ฅผ ์ก์!! ๋ง์ฝ ์ฌ๋ฌ ๊ฐ์ ์์ธ๋ฅผ ๋๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ๋ค๋ฉด ๋ค์ค ์บ์น ๋ฐฉ์์ ์ฌ์ฉํ์. ex) catch(NumberFormatException | IOExcep.. [์๋ฐ ์ฝ๋ฉ์ ๊ธฐ์ ] 4์ฅ : ์ฌ๋ฐ๋ฅด๊ฒ ๋ช ๋ช ํ๊ธฐ ํ๋ก๊ทธ๋๋ฐ์์ ์ด๋ฆ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ง๋ ๊ฒ์ ์ค์ํ๋ค. ํ์ง๋ง ํจํค์ง, ํด๋์ค, ๋ฉ์๋, ํ๋, ๋งค๊ฐ๋ณ์, ์ง์ญ ๋ณ์ ๋ฑ ๋ช ๋ช ํ ์์๊ฐ ๋๋ฌด ๋ง๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์์์ ์ข์ ์ด๋ฆ์ ์ง๋ ๊ฒ์ ์ด๋ ต๋ค. 4์ฅ์์๋ ์ฝ๋ ์์์ ๊ฑธ๋ง๋ ์ด๋ฆ์ ํ ๋นํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๋ฐฐ์ด๋ค. ๋ช ๋ช ํ ๋ ์๋ฐ ๊ท์น์ด ์ค์ํ๋ฉฐ, ๋ฉ์๋ ๋ช ๋ช ์ ๊ฐ๊ฒฐํด์ผ๋ง ํ๋ฉฐ ์๋ฏธ์๊ฑฐ๋ ํ ๊ธ์์ง๋ฆฌ ์ด๋ฆ์ ํผํด์ผ๋ง ํ๋ค. 4.1 ์๋ฐ ๋ช ๋ช ๊ท์น ์ฌ์ฉํ๊ธฐ ์๋ ์ฝ๋๋ ์ด๋ค ๋ฌธ์ ๊ฐ ์์๊น..? class Rover { static final double WalkingSpeed = 3; final String SerialNumber; double MilesPerHour; Rover(String NewSerialNumber) { SerialNumber = Ne.. [์๋ฐ ์ฝ๋ฉ์ ๊ธฐ์ ] 3์ฅ : ์ฌ๊ธฐ๋กญ๊ฒ ์ฃผ์ ์ฌ์ฉํ๊ธฐ 3.1 ์ง๋์น๊ฒ ๋ง์ ์ฃผ์ ์์ ๊ธฐ ์๋ฌด๋ฐ ์๋ฏธ์๋ ์ฃผ์์ ์์ค๋ค. ๋์ ์ฝ๋๋ง ๋ณด์์๋ ๋๋ฌ๋์ง ์๋ ์ ๋ณด๋ฅผ "์ฃผ์"์ผ๋ก ํ์ํ์. 3.2 ์ฃผ์ ์ฒ๋ฆฌ๋ ์ฝ๋ ์ ๊ฑฐ ์ฃผ์ ์ฒ๋ฆฌ๋ ์ฝ๋๋ ์ผ๋ฐ์ ์ธ ์ฃผ์๊ณผ ๋ฌ๋ฆฌ ๋ช ํํ ์ค๋ช ํ ์๋ค. ์ด๋ ์ฝ๋์ ํผ๋๋ง ๊ฐ์ค์ํค๋ ์ฐ๋ ๊ธฐ๋ฅผ ๋ผ์น๋ ๊ฒ๊ณผ ๊ฐ๋ค. ์ด์ฐจํผ ์ฃผ์ ์ฒ๋ฆฌ๋ ์ฝ๋๋ฅผ ๋ค์ ์ฐพ์ ์ผ์ ์๋ค. ์ ๊ฑฐํ์. 3.3 ์ฃผ์์ ์์๋ก ๋์ฒด 2์ฅ์์ ๋ณด์๋ "๋งค์ง๋๋ฒ" ์ฌ์ฉ ์ ๊ฐ ๋๋ฒ์ ์๋ฏธ์ ๋ํ ์ฃผ์์ ๋ฌ์๋๋ ๊ฒ์ ๋์์ง ์์ ๋ฐฉ๋ฒ์ด๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๋ "์์"๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ฃผ์์์ด ์ฝ๋๋ง์ผ๋ก ์ฃผ์์ ๋์ฒดํ ์ ์๋ค. ์ฃผ์์ "์์, ๋ณ์, ํ๋, ๋ฉ์๋ ์ด๋ฆ"์ผ๋ก ๋์ฒดํ ์ ์๋ค๋ฉด ๋ฐ๋ก ์๋ํ์! 3.4 ์ฃผ์์ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ก ๋์ฒด // round to intege.. [์๋ฐ ์ฝ๋ฉ์ ๊ธฐ์ ] 2์ฅ : ์ฝ๋ ์คํ์ผ ๋ ๋ฒจ์ 2.1 ๋งค์ง ๋๋ฒ๋ฅผ ์์๋ก ๋์ฒด void setPreset(int speedPreset) { if (speedPreset == 2) { setTargetSpeedKmh(16944); } else if (speedPreset == 1) { setTargetSpeedKmh(7667); } else if (speedPreset == 0) { setTargetSpeedKmh(0); } } void setTargetSpeedKmh(double speed) { targetSpeedKmh = speed; } ์ ์ฝ๋ ์กฐ๊ฐ์ฒ๋ผ ์๋ฌด๋ฐ ์๋ฏธ์๋ ์ซ์๊ฐ ํ๋ก๊ทธ๋จ์ ๋์์ ์ ์ดํ๋ค๋ฉด "๋งค์ง ๋๋ฒ"๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด๋ฌํ ๋งค์ง๋๋ฒ์ ์ฌ์ฉ์ ์ ํํ ๋ป์ด ์ ํด์ ธ์์ง ์๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ฐ๋ฉฐ ์ฌ์ฉ์๊ฐ ๋ฉ์๋ ๋ด๋ถ์ ๋ํ ์ง.. [์๋ฐ ์ฝ๋ฉ์ ๊ธฐ์ ] 1์ฅ : ์ฐ์ ์ ๋ฆฌ๋ถํฐ 1.1 ๋ถํ์ํ ๋น๊ต ํผํ๊ธฐ microscope.isInorganic(sample) ์ด Bool์ ๋ฐํํ๋ค๋ฉด ๋ถํ์ํ๊ฒ True, False๋ก ๋น๊ตํด์ ์กฐ๊ฑด๋ฌธ์ ์ฒดํฌํ์ง ๋ง๊ณ ๊ฐ๋จํ๊ฒ ์์ ์. if(microscope.isInorganic(sample) == true) if(microscope.isInorganic(sample) == false) ๋ณด๋จ if(microscope.isInorganic(sample)) if(!microscope.isInorganic(sample)) ๋ฅผ ์ฌ์ฉํ์. 1.2 ๋ถ์ ํผํ๊ธฐ 1. ๋ฉ์๋๊ฐ ๋ฐํ ๊ฐ์ผ๋ก False(๋ถ์ )์ ๋ฐํํ๊ฒ ๋๋ฉด ํ๋ฒ ๋ ์๊ฐํ๋ฉฐ ์ดํดํด์ผ ํ๋ค. 2. ๋ฐํ ๊ฐ์ด ๊ธ์ ์ธ ๊ฒ์ ๊ตณ์ด `!`์ ์ด์ฉํด์ ๋ถ์ ์ผ๋ก ๋ฐ๊พธ๋ฉด ํ๋ฒ ๋ ์๊ฐํ๋ฉฐ ์ดํดํด์ผ ํ๋ค. .. [Book] "๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด" ์ ๋ฆฌ ๋ ธ์ ์ ์ ์ด๋ ผ ๊ฒ์ ํฐ์คํ ๋ฆฌ์ ์ฎ๊ธฐ๋ ๋งํฌ๋ค์ด์ ์ง์ํ์ง ์์์ ๊ธ๊ผด์ด ์ด์ํฉ๋๋ค; ์๋ ๋งํฌ๋ก ๋ณด์๋ฉด ์ ์์ ์ธ ๊ธ๊ผด์ ๋ณด์ค ์ ์์ต๋๋ค. www.notion.so/72ef860ed57f4e85a00260193175577f 1. ํ๋ ฅํ๋ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด ๊ฐ์ฒด๋ ์ค์ํ์ ๋ชจ๋ฐฉํ๋ค๊ณ ํ๋ฉด ๋น์ ๋ ์ฝ์ง๋ง ์ณ๋ค๊ณ ๋ณผ์ ์๋ค. ๊ฐ์ฒด ์งํฅ์ ์๊ธฐ ์์ ๋ง์ ์๋ก์ด ์ธ๊ณ๋ฅผ ์ค๊ณํ๊ณ ์๋ ๊ฒ์ด๋ค. ๊ฐ์ฒด๋ ์์ ์ ์ญํ ์ ๋ํ ์ฑ ์์ ๋คํ๊ธฐ ์ํด ์๋ก ํ๋ ฅํ๋ ์กด์ฌ์ด๋ค. ๊ฐ์ฒด์งํฅ์ ํต์ฌ์ ์ฑ ์์ ์ํํ๋ ์ญํ ๊ฐ์ ํ๋ ฅ ๊ด๊ณ ๊ตฌ์ถ์ด๋ค. (๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฐ์ฒด๋ค) ์ด ๋ ํ๋ ฅ์ ์ฐธ์ฌํ๋ ๊ฐ์ฒด์ ๊ตฌํ ๋งค์ปค๋์ฆ์ด ํด๋์ค์ผ ๋ฟ์ด๋ค. 2. ์ด์ํ ๋๋ผ์ ๊ฐ์ฒด ๊ฐ์ฒด == ์ํ, ํ๋, ์๋ณ์.. ๊ฐ์ฒด์ ์ํ๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ํน์ง .. ์ด์ 1 2 3 4 5 ๋ค์