์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ,
์ด ํ๋ก์ ํธ๋ฅผ ์ฌ๋ํ๊ณ ์์ผ๋ก์ ๊ณํ์ด ๋ฌด์์ธ์ง ์๊ณ ์ถ๊ธฐ ๋๋ฌธ์ ์ด ํธ๋ฅผ ์ฝ๋๋ค. ํ์ฌ๋ก์๋ ์ ์ง ๊ด๋ฆฌ์ ์ค ๋๊ตฌ๋ ๋ฌธ์ ๋ฐ pull ์์ฒญ์ ์๋ตํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฐ ๋ฒ๋ ค์ง ๋๋์ด ๋ญ๋๋ค.
@ploeh @zvirja @ecampidoglio @moodmosaic @adamchester
@Kralizek , ์ง๋ฌธํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๋๋ ๋ ์์ ์ ๋ํด์๋ง ๋งํ ์ ์์ต๋๋ค. ์ค์ ๋ก https://github.com/AutoFixture/AutoFixture/issues/703#issuecomment -275347457์ ์ด ๋๋ก์ ๋๋ค.
PR์ ๊ฒํ ํ๋ ๋ฐ ํ์ํ ์ง์์ด ์๋ ๊ฒฝ์ฐ ๊ด์ฐฎ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด์ ์ ์์ , ์์ฑ ๋๋ ๊ธฐ์ฌํ ์ฝ๋ ๊ธฐ๋ฐ ๋ถ๋ถ์ (๊ธฐ์๊ฒ) ๊ฒํ ํฉ๋๋ค.
๋ด๊ฐ ๋ช ์์ ์ผ๋ก ์ธ๊ธ๋ pull ์์ฒญ์ด๋ ๋ฌธ์ ๋ฅผ ๋์น ๊ฒฝ์ฐ ์๋ ค์ฃผ์ญ์์ค. ๋๊ตฐ๊ฐ ๋๋ฅผ ๋ฆฌ๋ทฐ์ด๋ก ์ถ๊ฐํ๊ฑฐ๋ ๋ฌธ์ ์ ๋ํด ๋ช ์์ ์ผ๋ก ์ธ๊ธํ ์ง ์ค๋๋์์ต๋๋ค...
@moodmosaic , #703์ ๋ค์ ์ง์ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ด ์์น๋ ์ฌ์ ํ ๊ทธ๋์ ๊ฐ์ต๋๋ค. AutoFixture ํ๋ก์ ํธ์์ ๋ฒ์ด๋ฌ์ง๋ง ๋ช ์์ ์ผ๋ก ํธ์ถ๋๋ฉด ์กฐ์ธ์ ๋๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์๋ ๊ฒ ๊ฐ์ผ๋ฉด ์ด ๋ฌธ์ ๋ฅผ ์ฌ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ฌ ์ ์ง ๋ณด์๋ ์ด๋ํ์ ์ ์์ต๋๋ค. ๊ทธ๋ค ์ค ํ๋๋ก๋ถํฐ ์๋ต์ ๋ฐ๋์ง ๋ด ์๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ ๋ค์ ping์ ๋ณด๋ด์ฃผ์ญ์์ค. ์ผ์ฃผ์ผ ์ ๋๋ผ๊ณ ํด์ผ ํ ๊น์?
๋ด๊ฐ ๊ฒฝํํ ๋ถ์ผ์์ ๊ฐ๋ PR์ ๊ฒํ ํ๋ ๋ฐ ์ฌ์ ํ ๋์์ด ๋ ์ ์์ง๋ง ์์ฆ์๋ ๊ทธ๋ฐ ๋ถ์ผ๊ฐ ๊ฑฐ์ ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ํฉ์ด ์์ง์ด์ง ์๋๋ค๋ฉด ๊ทธ ์ด์ ๋ฅผ ์์๋ด๊ณ ํ์ํ ๊ฒฝ์ฐ ๋ ๋ง์ ์ฌ๋๋ค์ ์ฐพ๋๋ก ๋์ธ ์ ์๋์ง ๋ด ์๋ค.
๋๋ ํ๋ก์ ํธ์ ๋ํ ํต์ ๊ถ์ ๋์ฐพ์ ์๊ฐ์ ์์ง๋ง ๋ด๊ฐ ๋งํ ์ ์๋ ํ ๋๋ ์ฌ์ ํ ์ ์ฅ์์ ๋ํ ์ฐ๊ธฐ ๊ถํ์ด ์์ต๋๋ค. ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ ์์ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์ด๋๋ฉด ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
์๋ ์๋ค์!
์ฌ๊ธฐ์๋ ์ ํผ๋๋ฐฑ์ด ์์ต๋๋ค. ๊ณต์์ ์ผ๋ก๋ ์๋์ง๋ง ํ์ฌ๋ก์๋ ๋ด๊ฐ ํ๋ก์ ํธ์์ ๊ฐ์ฅ ํ๋์ ์ธ/๋ฆฌ๋ ๋ฉ์ธํ ์ด๋์์ ๊ฒ์ด๋ผ๋ ๊ธฐ๋๊ฐ ์์ ๊ฒ์ ๋๋ค.
์ฒ์์๋ ์ ์ง ๊ด๋ฆฌ์ ๋งค์ฐ ์ด์ ์ ์ด์๊ณ ๋ ๊ฐ์ ํ ์ ์๋ ์์ด๋์ด๊ฐ ๊ฑฐ์ ์์์ต๋๋ค. ์ค๋๋ ์๋ ์ต์ํ ์ ์ง ๊ด๋ฆฌ ๊ด์ ์์(์: .NET Standard 1.x ์ง์ ์ค๋จ) ํด์ผ ํ ์ผ์ ๋ด ๋๋ค.
์ต๊ทผ์ ๋๋ ํ๋ก์ ํธ ์ง์์์ ๋ฌผ๋ฌ๋ฌ๊ณ ์ด์ ๋ํ ๋ช ๊ฐ์ง ์ด์ ๋ฅผ ์ค์ค๋ก ํ์ธํ์ต๋๋ค.
๋ฉด์ฑ ์กฐํญ : ๋ชฉ์ ์ ๋๊ตฌ๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ์๋๋ฏ๋ก ๊ฐ์ธ์ ์ผ๋ก ์ดํดํ์ง ๋ง์ญ์์ค. ์คํ๋ ค ์ ๊ฒฝํ์ ๊ณต์ ํ์ฌ ์ด์ ๋ํด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ด ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ๋งํ ๊ฐ์น๊ฐ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ๋ชจ๋๊ฐ Mark๊ฐ ๋จ๊ธด ์ ์ฐ์ ๋ณด์กดํ๋ ค๊ณ ํ๋ค๋ ๊ฐํ ๋๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. Mark๊ฐ ํ๋ ค๋ ๊ฒ ์ธ์๋ ๋ค๋ฅธ ๊ฒ์ ์๋ํ ์์ ๊ฐ ์์ต๋๋ค. Mark๋ ์ง์ ์ฐธ์ฌํ์ง ์์ ๊ฑฐ์ ๋ชจ๋ PR์์ ์ธ์ฉ๋์์ต๋๋ค. :)
์ด๋ ์์ ์์ ๋๋ ์ฌ๊ธฐ์์ ๋ฌด์์ด๋ ์์ ํ๋ ๊ฒ์ด ๋๋ฌด ์ด๋ ค์์ก๋ค๋ ๊ฒ์ ๋๋ผ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ด๊ฐ ํ๋ก์ ํธ์ ๋ํ ์ด์ ์ ์ฃฝ์์ต๋๋ค.
Mark๋ ๋ ๋ฌ์ง๋ง ์ฌ์ ํ ๊ฐ์ธ์ ์ผ๋ก ํ๋ก์ ํธ์ ์์ ๊ถ์ ์ฌ์ ํ โโ๊ทธ์๊ฒ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Mark๊ฐ ๋ฉ์ง๊ฒ ๋ง๋ ๋ฌด์ธ๊ฐ๋ฅผ ํญ๋ ฅ์ ์ด๊ณ ์ผ๋ง์ ์ผ๋ก ๊นจ๋จ๋ฆด ๊ธฐํ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ๋ง์ ๋ด๋ถ/์ธ๋ถ ์๋ ฅ์ ๋๋๋๋ค. ์ด ์ธ์ ์ค ์ผ๋ถ๋ ๋ด๊ฐ ๋จ๋ ์ผ๋ก ๋ง๋ ๊ฒ์ด์ง๋ง ๋ค๋ฅธ ์ ์ง ๊ด๋ฆฌ์๊ฐ ๊ทธ๋ฌํ ์ธ์์ ์ฃผ๋ ๋ฐ ๊ธฐ์ฌํ ๋ถ๋ถ์ด ์์ต๋๋ค.
์๋ง๋ ๋ด ๊ธฐ๋์ ํ์ค์ ์ฐจ์ด ์ผ๋ฟ์ ๋๋ค. ๋๋ ์ด ํ๋ก์ ํธ๋ฅผ ํตํด ๋ด ์์ด๋์ด๋ฅผ ํํํ๊ณ ์๋ํ ์ ์๊ณ , ๋ฏผ์ฒฉํ๊ณ ์ ์ ํ๋ฉฐ ์๋ก์ด ๊ธฐ๋ฅ์ผ๋ก ๊ฐ๋ ์ฐจ๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ๋ณ๊ฒฝ์ด ํ์ฉ๋์ง ์๋ ๋ ๊ฑฐ์ ํ๋ก์ ํธ์ฒ๋ผ ๋๊ปด์ก์ต๋๋ค.
๋๋ ๋ด ์ ์ ์ค ์ผ๋ถ๊ฐ ์ด์์ ์ด์ง ์์ ์ ์์์ ์ธ์ ํ๋ฉฐ, ๋ฌผ๋ก ๋๋ ์กด๊ฒฝํ ๋งํ Mark๋งํผ ๊ฒฝํ์ด ๋ง์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ๋ ์์ ๋ก์ธ ์ ์์๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ๊ฐ ๋ ์์ํ์ต๋๋ค.
ํ๋ก์ ํธ์ ํฉ๋ฅํ์ ๋ ๋ฌด์๋ณด๋ค๋ ๋ฏผ์ฒฉํ ํ ๋ก ์ ์ฐธ์ฌํ๊ณ ํ์ ์ผ์์ด ๋๊ณ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ์ด์ธ๋ฆฌ๊ธฐ๋ฅผ ๊ธฐ๋ํ์ต๋๋ค. ๋ถํํ๋, ์๊ฐ์ ์ด ๋ฐ/๋๋ ๊ธฐํ ์์ธ์ผ๋ก ์ธํด ๋ค๋ฅธ ์ ์ง ๊ด๋ฆฌ์๊ฐ ํ ๋ก ์ ๋๋ฌด ๋ง์ด ์ฐธ์ฌํ์ง ์์๊ณ ๊ฒฐ๊ตญ ๋๋ ์ฌ๊ธฐ์์ ํผ์๋ผ๋ ๋๋์ด ๋ค๊ธฐ ์์ํ์ต๋๋ค. ๋ค๋ฅธ ๊ด๋ฆฌ์๋ค์ด ํ์ฌ ์ด ํ๋ก์ ํธ์ ๋ํด ๋๋ฌด ๋ง์ ์๊ฐ/์ด์ ์ด ์๋ค๊ณ ์๊ฐํ์ฌ ๋ง์นจ๋ด ๊ฐ์ ๊ฒ์ ๊ณต์ ํ๊ธฐ ์์ํ์ต๋๋ค.
์ง๊ธ์ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํ์ง ์์ผ๋ฏ๋ก AutoFixture๋ฅผ ๋๋ฌด ๋ง์ด ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๋๋ ์ฌ์ ํ ์ด ํ๋ก์ ํธ์ ํฐ ์ฌ๋ฏธ๋ฅผ ๋๋ผ๊ณ ์์ผ๋ฉฐ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ผญ ์์ด์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ํ์ง๋ง ํ ์คํธ๋ฅผ ๋๋ฌด ๋ง์ด ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ธ์ ์ผ๋ก ๋ณ๊ฒฝ์ ์๊ตฌํ์ง ์์ต๋๋ค.
๋ ๋์๊ฐ ๋๋ ํ๋ก์ ํธ ์ํ์ ์ฐธ์ฌํ๊ณ ์ ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ด ์ง์์ ๊ณต์ ํ๋ ๊ฒ์ ๊บผ๋ คํ์ง ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ฝ๋/์ ์ง ๊ด๋ฆฌ๋ ๋์๋๋ฆด ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ถํํ๋ ํ์ฌ๋ก์๋ ์์ ์ ์ง ๊ด๋ฆฌ์๊ฐ ๋ ๋งํผ์ ์ด์ ๊ณผ ์๋์ง๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ๋ขฐํ๊ณ ์ด์ ์ด ๋์น๋ ํ๋ณด๊ฐ ์๋ค๋ฉด ๋ฐ๋์ ์ด๋ํ์ฌ ์ ์ง ๊ด๋ฆฌ์ธ์ผ๋ก ์ผ์์ผ ํฉ๋๋ค.
๋จผ์ #703 ํ ๋ก ์์ ์ฐ๋ฝ์ ๋๋ฆฌ์ง ๋ชปํ @AutoFixture/core ํ์ ์ฌ๊ณผํ๊ณ ์ถ์ต๋๋ค. ๋ค, ๋ฐ์ ์๊ฐ์ด์์ง๋ง(์ง๊ธ๋ ๊ทธ๋ ์ต๋๋ค) ์ ๊ฐ ๋๋ฌด ๋ฐ๋น ์ ๋ต์ฅ์ ๋ชป ๋๋ฆฐ ๊ฒ์ ์๋๋๋ค. ๋ด ์ธ๊ธ์ ๋ํ ์๋ฆผ์ ๋ฐ์ง ๋ชปํ๊ณ ํ ๋ก ์ ๋ค์ ํ์ธํ ์๊ฐ๋ ํ์ง ์์์ต๋๋ค. ๋๋ #703์ ๋ค์ ๋ฐฉ๋ฌธํ๋ฉด์ ๋ฌธ์ ๊ทธ๋๋ก ๋ฐฉ๊ธ ๊ทธ๊ฒ์ ๋ํด ์๊ฒ ๋์์ต๋๋ค. ๋ค์ ํ ๋ฒ ์ฃ์กํฉ๋๋ค. ๐
AutoFixture์ ๋ฏธ๋์ ๋ํ ๋์ ์ ์ฅ ์ 2016๋ ์ ๋ด๊ฐ ํํํ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค. ์ ๋ AutoFixture๊ฐ ๊ฝค ์์ ์ ์ด๋ฉฐ ๋ช ๋ ๋์ ์ฌ์ฉ๋์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋๊ตฐ๊ฐ ๋ค๋ฅธ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ณ ์ถ๋ค๋ฉด ๊นจ๋ํ ์ํ์์ ์์ํ๋ ๊ฒ์ด ๋ ๋์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์๋ ์์ฑ ํ ์คํธ ๋ฐ์ดํฐ์ ๊ฐ๋ ์ ๋งค์ฐ ์ข์ ๊ฒ์ด๋ฉฐ AutoFixture๋ ํ์คํ .NET ํ๋ซํผ์์ ์ํํ ์ ์๋ _์ ์ผํ_ ๋ฐฉ๋ฒ์ด ์๋๋๋ค.
AutoFixture์ ๋ฒ๊ทธ๊ฐ ์๋ค๋ ๊ฒ์ ์๋๋๋ค. ๋ด๊ฐ ๋งํ๋ ๊ฒ์ ์ ์ง ๊ด๋ฆฌ์ ์๊ณผ ๋ฒ์๊ฐ @AutoFixture/core ํ์ ์ฑ ์์ผ๋ก ๋จ์ ์ ์์ ๋งํผ ์ถฉ๋ถํ ์๋ค๋ ๊ฒ์ ๋๋ค.
์์ ๊ฐ๋ฐ์๊ฐ ํ์ํฉ๋๊น? ์คํ ์์ค์ ์ญ์ฌ ๋ ๊ฐ๋ณ ๋ฆฌ๋๊ฐ ์๋ ํ๋ก์ ํธ๋ ๊ฒฐ๊ตญ ํฌ๊ธฐํ ๊ฒ์์ ์์ฌํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฆฌ๋ ๊ทธ๋ฃน์ ์ด๋ป์ต๋๊น?
๋๋ ์ฐ๋ฆฌ๊ฐ ์๋ช ๋ ๋ฆฌ๋๋ฅผ ๋บ ํ์ฌ ๋ชจ๋ธ๋ก ๋์๊ฐ๊ณ ๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ์งํ๋๋์ง ๋ณด๋ ค๊ณ ๋ ธ๋ ฅํ๋ค๊ณ ๋งํฉ๋๋ค.
AutoFixture๋ ์ ๋ง ์ข์ ํ๋ก์ ํธ์ ๋๋ค. ์์ํ ์ฌ๋ผ์ง๋ ๋ชจ์ต์ ๋ณด๋ฉด ๋งค์ฐ ์ฌํ ๊ฒ์ ๋๋ค.
@zvirja ๋ ํ๋ก์ ํธ์ ๊ฐ์ฅ ํ๋์ ์ธ/๋ฆฌ๋ ์ ์ง ๊ด๋ฆฌ์์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋๋ ๊ทธ๊ฐ ์ด ํ๋ก์ ํธ๊ฐ ์ด๋ป๊ฒ ๋ฐ์ ํ ์ง ์ด๋์ด๊ฐ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์คํ ์์ค ํ๋ก์ ํธ๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ค๋ฉด ๋ง์ ๋ ธ๋ ฅ๊ณผ ์๊ฐ์ด ํ์ํฉ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก ๋๋ ์ด ํ๋ก์ ํธ๋ฅผ ์งํํ๊ธฐ ์ํด ๊ธฐ๋ถํ๋ ๊ฒ์ ๊บผ๋ฆฌ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ฌํฉ๋๋ค @zvirja
๋๊ตฐ๊ฐ๊ฐ ๋ฐฉ์ ์๋ ์ฝ๋ผ๋ฆฌ๋ฅผ ์ง์ ํด์ผ ํ๋ฏ๋ก ๋๋ ๋ง์ฐฌ๊ฐ์ง์ผ ๊ฒ์ ๋๋ค.
์ด ์ค๋ ๋๋ ์ฅ๋ก์(๋๋ ํ๊ณ ์ )๊ณผ ๋ง์ด ๋น์ทํด ๋ณด์ ๋๋ค.
๋๋ ์ฐ๋ฆฌ(์ปค๋ฎค๋ํฐ)๊ฐ ์ฌ๊ณผ๋ฅผ ๋์ง๋ ๊ฒ๋ณด๋ค ์ฐ๋ฆฌ๊ฐ ์ฒํ ์ํฉ์์ ํ์ถ๊ตฌ๋ฅผ ์ฐพ๋ ๋ฐ ๋ ์ง์คํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ง๊ธ๊น์ง ์ด ์ค๋ ๋๋ ๋ฌธ์ ๋ฅผ ์ง์ ํ๋ ๋ฐ ๋งค์ฐ ํ๋ฅญํ์ต๋๋ค.
์ด์ ์ฐ๋ฆฌ๊ฐ ์ทจํ ์ ์๋ ์กฐ์น ๋ชฉ๋ก์ ๋ง๋ค์ด ๋ณผ๊น์?
๋๊ตฐ๊ฐ ๊ด์ฌ์ ๊ฐ๊ณ ์๋ค๋ฉด ์ฌ๊ธฐ์ ๋ด ์๊ฒฌ์ด ์์ต๋๋ค.
AutoFixture.Experimental
๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ด ํจํค์ง๋ ์์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํต์ฌ ๋ฒ์ ์ ๋๋ฌํ๋ ๊ฒ์ผ๋ก ํ์ธ๋์ง ์์์ต๋๋ค(Boost๋ ํ์ค C++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ).๋๋ @zvirja ์ ๋์ํฉ๋๋ค. ์ด ํ๋ก์ ํธ๋ ๋งค์ฐ ์ํ์ ์
๋๋ค. ์ ๋ ์ฝ 2๋
์ ์ AutoFixture๋ฅผ ๋ฐ๊ฒฌํ๊ณ ์ต๊ทผ์์ผ PR์ ์ ์ถํ ์ฉ๊ธฐ๋ฅผ ์ป์์ต๋๋ค.
์ ์ ๊ฐ์ ๊ฐ์ ์ ๋๋ผ์๋ ๋ถ๋ค๋ ๊ณ์ค ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค. ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๊ณ ์๊ณ ๊ทธ๊ฒ์ด ๋ฒ์ฐฝํ๋ ๊ฒ์ ๋ณด๊ณ ์ถ์ดํ๋ ์ฌ๋๋ค.
๋ฐฉ์ ์๋ ์ฝ๋ผ๋ฆฌ๋ฅผ ๊ฐ๋ฆฌํค๋ @aivascu ์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
๋๋ ๋น์ ์ ๋ถ์์ ๋์ํ์ง๋ง ๋ค ๋ฒ์งธ ์ต์ ์ด ์์ต๋๋ค.
๋ํ ๋ด ์ด๋ฆ์ ๋ชฉ๋ก์ ์ฌ๋ ค์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ํ์ง๋ง ๋ถํํ๋ ์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์ ๋ํ ๊ฒฝํ์ด ๋ง์ง ์์ ์ด๋ฆฌ์ ๋ฆฌ ์์ง์ผ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ๊ฒฝํ์ ๊ดํด์๋ผ๋ฉด ๊ธฐ๊บผ์ด ๊ฐ์ ํ ์ ์์ต๋๋ค...
ํ๋ก์ ํธ ์ ์ง์ ๋ํ ์ด์ ์ ๋ถ๋ฌ์ผ์ผํค๋ ํ์/ํ์ ํ๋ก๊ทธ๋จ์ ์ด๋ป์ต๋๊น?
๊ฒฐ๊ตญ ์ธ๊ธฐ์๋ repo์
๋๋ค.
์ง๋ 3๋ ๋์ AutoFixture๋ฅผ ์ฌ์ฉํ ๋ด 2์ผํธ:
AutoFixture์ ๋ธ๋๋ ์ด๋ฆ์ด ํ๋ฅญํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฉ์ง ์ด๋ฆ์ ๋๋ค.
์คํ ์ค๋ฒํ๋ก์์ ์ธ๊ธฐ๊ฐ ์์ต๋๋ค. [autofixture]
์๋ 506๊ฐ์ ์ง๋ฌธ์ด ์๋ ๋ฐ๋ฉด [xunit.net]
์๋ 801๊ฐ์ ์ง๋ฌธ์ด ์์ต๋๋ค. .NET Core์ ์ค๊ณต์ ํ
์คํธ ํ๋ ์์ํฌ๋งํผ ์ธ๊ธฐ๋ฅผ ์ป์ผ๋ ค๋ฉด ๋ค์ ๋๋๊ณ ๋ถ๋ถ์ ์ผ๋ก Mark์ ๋์์๋ ํ์ ๋๋ถ์
๋๋ค. ๊ฐ๋ฅด์น๋ ๊ฒ(๊ทธ๋ฆฌ๊ณ ํ๋ฅญํ ๊ต์ฌ๊ฐ ๋๋ ๊ฒ). ๊ทธ๋ฆฌ๊ณ Mark์ ๋ธ๋ก๊ทธ ๋ ๋ฌด๋ฃ ํ
์คํธ ์ง์์ ์๊ณผ ๊ฐ์ต๋๋ค.
AutoFixture์ API๋ ๋ฐฐ์ฐ๊ธฐ ๋ค์ ์ด๋ ต๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ด๊ฐ ์ข์ํ๋ AutoFixture ๋ถ๋ถ:
Fixture.Freeze
๊ต์ฅํด์ง์ ์ฌ์ฉํ์ง ์๋ AutoFixture ๋ถ๋ถ:
AutoFixture์ ๊ฐ์ /ํ์ฅ์ ์ํ๋ ๋ถ๋ถ
๋ด๊ฐ ์ข์ํ์ง ์๋ AutoFixture ๋ถ๋ถ(๋๋ถ๋ถ ์ฌ์ํ):
Do..Without
๋์์ธ ํจํด์ ์ต์ํด์ง๊ธฐ๊ฐ ๋ค์ ์ด๋ ต์ต๋๋ค. ์๋ํ์ง๋ง ์ฅํฉํ๊ณ ์ฌ๊ท ์ํฐํฐ์ ๋์์ด๋์ง ์์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ AutoFixture๊ฐ ์ด๋ฏธ ์์ฑ๋ ๊ฐ์ฒด์ ํด์ ํ
์ด๋ธ์ ์์ฑํ๋๋ก ์ง์ํ๋ ํน๋ณํ ๋์์ด ํ์ํฉ๋๋ค.ํ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋ถํ:
์ฌ๊ธฐ์์ ์ค๋ช ํ๋ ๋ฌธ์ ์ค ์ผ๋ถ๋ Microsoft๊ฐ .NET Core์ ๋ํ ํ ์คํธ์์ AutoFixture๋ฅผ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์คํ์ ์ธ ํฌํฌ๊ฐ ๊ฐ ์ ์๋ ๋ฐฉ๋ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค. AutoFixture๋ ๊ฐ๋ฐ์๊ฐ ์ผ์์ ์ผ๋ก ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉํ๊ณ ์ถ๊ฐ ๊ธฐ๋ฅ๊ณผ ํฅ์๋ ์ฌ์ฉ ํธ์์ฑ์ ์ด์ ์ ํ์คํ ๋๋ฆด ์ ์์ผ๋ฉฐ ๊ทธ ๋ค์ ๊ณ ํ์ง ์ฝ๋๋ฒ ์ด์ค๊ฐ ์๋ ๋ช ์ ๋๋ ์คํ ์์ค ํ๋ก์ ํธ ์ค ํ๋์ ๋๋ค. ๊ธฐ์ฌ ๋ฐ ๋ฐฉํฅ ๋ณ๊ฒฝ์ ๋ํ ์ฐ๋ ค๊ฐ ์ํ๋๋ค๋ฉด ๊ด์ฌ์ด ๋ฎ์ ๊ฒ์ด๋ผ๊ณ ์์ํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์กํฐ๋ธ ํฌํฌ๊ฐ ํ๋ ์ผ์ ๋๋ค.
์คํ์ ์ธ ํฌํฌ๊ฐ ๊ฐ ์ ์๋ ๋ฐฉ๋ฒ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
์ ๊ทธ๋ ๊ฒ ํ์๊ฒ ์ต๋๊น? ๋น์ ์ ๊ทธ ํฌํฌ๋ฅผ ์ ์งํด์ผํฉ๋๋ค. ๊ทธ๋ ๊ฒ ํ ์ํฅ์ด ์๋ค๋ฉด ๋์ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ง ๊ด๋ฆฌ์๋ก ๋์์ง ์๊ฒ ์ต๋๊น?
์คํ์ ์ธ ํฌํฌ๋ณด๋ค๋ ์์์ ๋ ผ์ํ QoL ๊ฐ์ ์ฌํญ์ ์๊ฐํ๊ธฐ ์ํด ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑ(๋๋ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๊ณ์ ๊ตฌ์ถ)ํ๋ ๊ฒ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค.
AutoFixture์๋ ๋ง์ ๊ฒ์ ์ฑ์ทจํ ์ ์์ง๋ง ๋ง์ ์ฌ๋๋ค์ ๋๋ผ๊ฒ ํ ์ ์๋ ๊ฐ๋ ฅํ API๊ฐ ์์ต๋๋ค. ๋๋ถ๋ถ์ ๊ฒ๋ค์ ๋จ์ํ ๊ตฌ๋ฌธ ์คํ์ผ๋ก ์๊ฐ๋ ์ ์์ต๋๋ค.
QoL ๊ฐ์ ์ฌํญ์ ์๊ฐํ๊ธฐ ์ํด
Renato( @Kralizek ), QoL์ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ์ถ์ ์ง?
๋ค.
๊ทธ๋ ๊ฒ ํ ์ํฅ์ด ์๋ค๋ฉด ๋์ ์ด ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ง ๊ด๋ฆฌ์๋ก ๋์์ง ์๊ฒ ์ต๋๊น?
@ploeh ์ด๋ป๊ฒ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ง ๊ด๋ฆฌ์๋ก ํ ๋จ๊ณ ํฅ์๋ฉ๋๊น? ์๊ตฌ ์ฌํญ์ด ์์ต๋๊น?
ํ์ฌ ์ ์ง ๊ด๋ฆฌ ๋ชฉ๋ก์ ๋ณด๋ฉด ์์งํ ์ฑ์์ผ ํ ๋ช ๊ฐ์ง ํฐ ์ ๋ฐ์ด ์์ต๋๋ค.
AutoFixture์ ๊ธฐ์ฌํ๊ณ ์ถ์ต๋๋ค. ์๋ง๋ ์ ์ง ๊ด๋ฆฌ์ธ์ผ๋ก์(์ธ์ ๊ฐ) ๋ค๋ฅธ ์ฌ๋๋ค๋ ์์ ๊ฒ์
๋๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ์ธ๊ธฐ ์๋ ์ ์ฅ์๋ฅผ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ ๋์ํ ์ฌ๋์ ์๋ฌด๋ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ ๊ทธ๋ ๊ฒ ํ์๊ฒ ์ต๋๊น? ๋น์ ์ ๊ทธ ํฌํฌ๋ฅผ ์ ์งํด์ผํฉ๋๋ค.
๋๋ ๊ทธ ์ธ์ฉ๋ฌธ์ ๋์ํ๋ค. ์ฒ์์ ์คํ ํจํค์ง๋ฅผ ์ ์ํ์ ๋ ์ด ์ค๋ ๋์์ ์ ์ฅ์๋ฅผ ์ ์งํ๋ฉด์ @zvirja ๊ฐ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ์ต๋๋ค. ํจํค์ง์๋ ๋ณ๊ฒฝ๋ ํฌํฌ๊ฐ ์๋ AutoFixture ์ฝ์ด ์์ ๊ตฌ์ถ๋ ๊ธฐ๋ฅ์ด ํฌํจ๋์์ ๊ฒ์
๋๋ค. @Kralizek์ด ์ค๋ช
ํ ๊ฒ๊ณผ ๊ฐ์ ๊ฒ์
๋๋ค.
๋ฌผ๋ก ์ด์์ ์ผ๋ก๋ ์ด์ ๊ฐ์ ํจํค์ง๊ฐ ํ์ํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํด์ผ ํ ๊ฒ์ ๊ธฐ์ ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ฌ๋์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํด์ผ ํ ๊ฒ์ ๊ธฐ์ ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ฌ๋์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๊ฒ ๋ฌด์จ ๋ป์ธ์ง ๋ชจ๋ฅด๊ฒ ์ด์. ๋ ์๋ ค์ฃผ์ธ์.
์ฐ๋ฆฌ๊ฐ ํด๊ฒฐํด์ผ ํ ๊ฒ์ ๊ธฐ์ ์ ๋ฌธ์ ๊ฐ ์๋๋ผ ์ฌ๋์ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๊ฒ ๋ฌด์จ ๋ป์ธ์ง ๋ชจ๋ฅด๊ฒ ์ด์. ๋ ์๋ ค์ฃผ์ธ์.
๊ทธ๊ฐ ์๋ฏธํ๋ ๋ฐ๋ @zvirja๊ฐ ๊ทธ์ ์ฝ๋ฉํธ ์์ ๋งํ ๊ฒ์ฒ๋ผ AutoFixture ๊ฐ ์๋ฆ๋ค์ด ์์ ์ํ์ ํ๊ดดํ๋ ๊ฒ์ ๋๋ ค์ํ์ง ์๊ณ ์์ ๋กญ๊ฒ ํ์ ํ ์ ์๋ ํ์ ์ ์ธ ๊ด๋ฆฌ์๊ฐ ํ์ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ด์ ์ ๊ฒฐ์ ๊ณผ ๋ฆฌ๋์ญ์ ์ํด ๋๋ฆฌ์์ง ๊ทธ๋ฆผ์์ ์์ด ๋ฌถ์ธ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋ ์ผ์ ์ ๋ ํ๋ค๋ ๋๋์ ๋ฐ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋ช ๊ฐ์ง ํฅ๋ฏธ๋ก์ด ์์ด๋์ด๊ฐ "๊ตฌ์"๊ณผ ์์ถฉ๋๊ธฐ ๋๋ฌธ์ ๊ฑฐ๋ถ๋์์ต๋๋ค. ์ด๊ฒ์ ๋๊ตฐ๊ฐ์ ๋๊ธฐ๋ฅผ ์ฃฝ์ผ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ์ ์์ ํฌํฌ๋ ์ด ์ง์ ๋ง์ด ํ์ด์ค ๊ฒ์ ๋๋ค.
์๊ฒ ์ต๋๋ค. ์ ๋ ๋จ์ํ ์ฌ๋์ ๋๋ค. https://github.com/AutoFixture/AutoFixture/pull/928 ๊ณผ ๊ฐ์ ๊ฒ์ ๋ณํฉํ๊ณ ์ถ์ต๋๋ค. ์์์ ์ธ๊ธํ๋ฏ์ด AutoFixture๋ ๊ณ ์ ํ ๊ฐ ์์ฑ์ ์ง์ํ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์น๋ฒ ์ ํ ํฉ๋ ์์ฑ๊ธฐ๋ ๊ทธ๋ฌํ ๊ธฐ๋ฅ์ ๋ํ ์ข์ ๊ธฐ์ด์ฒ๋ผ ๋ณด์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ต๊ทผ์ ์ฐ๋ฆฌ ์์ ์ ๊ฒ์ ์ผ๊ณ ์ด ํธ๋ฆญ์ ๋ํด ์๋ ์ฌ๋๋งํผ ๋๋ํ์ง ์์๊ณ ๋์ค์์์ผ PR์ ์ฐพ์์ต๋๋ค.
"๊ทธ๋, ์ด ๋ฉ์ง ์ผ์ ๋ ๋ง์ด ํด๋ณด์."
๋ฆฌํฌ์งํ ๋ฆฌ์ ์ ์ง ๊ด๋ฆฌ์๋ก์ ํ ๋จ๊ณ ๋ ๋์๊ฐ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
๋น์ ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์ ์ด ๊ทธ ์ฑ ์์ ๋งก์ ์ํฅ์ด ์๋ค๊ณ ๋งํฉ๋๋ค. ๋ด๊ฐ ๋งํ ์ ์๋ ํ, ๋๋ ์ฌ์ ํ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ๊ด๋ฆฌ์ ๊ถํ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ํ์ฌ ์ ์ง ๊ด๋ฆฌ์ ์ค ๋๊ตฌ๋ ์ด๋ฅผ ๋ช ์์ ์ผ๋ก ์ธ๊ธํ์ง ์์์ง๋ง, ์๋ฌด๋ ์ด๋ฅผ ๊ณ์ ์งํํ์ง ์์ ๊ฒ์ด๋ผ๋ ์ธ์์ ๋ฐ์์ต๋๋ค.
์๊ตฌ ์ฌํญ์ด ์์ต๋๊น? ํ์ฌ ์ ์ง ๊ด๋ฆฌ ๋ชฉ๋ก์ ๋ณด๋ฉด ์์งํ ์ฑ์์ผ ํ ๋ช ๊ฐ์ง ํฐ ์ ๋ฐ์ด ์์ต๋๋ค.
๊ณผ๊ฑฐ์ ๋ํด ๊ฑฑ์ ํ์ง ๋ง์ญ์์ค. ์ง๊ธ ์ํฉ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฝ์ผ๋ฉด AutoFixture๊ฐ ๋ฌผ์ ์ ๊ฒจ ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ทธ ์ผ์ ๊ณ์ ์งํํ์ง ์๋ ํ, ์๋ฌด๊ฒ๋ ๋ฐ๋์ง ์์ ๊ฒ์ ๋๋ค.
๋ฐ๋ผ์ ์ธ์์ ๋ชจ๋ ์ค์๋ฅผ ์ ์ง๋ฅผ ์ ์์ผ๋ฉฐ ์ํฉ์ ์ ํ์ํค๋ ์ผ์ ๊ฑฐ์ ์์ ๊ฒ์ ๋๋ค.
@ploeh ์ด๋ ๊ฒ ์ฌ๋ ค์ฃผ์๋ฉด ์ ๋ ๊ธฐ๊บผ์ด ์ ์ง๋ณด์๋ฅผ ํ๊ณ ๋ค๋ฅธ ๋ถ๋ค๋ ํ ๋ฐ ๋ ๋์๊ฐ๊ธธ ๋ฐ๋๋๋ค.
@aivascu ๊ฐ์ฌํฉ๋๋ค.
๋๋ ํ์ฌ ๊ด๋ฆฌ์์ ์ฃผ๋ณ ์ฌ๋๋ค์๊ฒ @zvirja , @moodmosaic , @adamchester , @ecampidoglio ์ ๋ํด ์ฝ 24์๊ฐ ๋์ ์ด์ ๋ํด ๋ ผํํ ์ ์๋ ์๊ฐ์ ์ค ๊ฒ์ด๋ฉฐ, ํญ์๊ฐ ์์ผ๋ฉด ๊ด๋ฆฌ์ ๊ถํ์ ๋ถ์ฌํ๊ฒ ์ต๋๋ค.
@ploeh ๋ด ์ชฝ์์ ์ด์๊ฐ ์์ต๋๋ค.
@aivascu ํ์น ์ ํ์ํฉ๋๋ค. ์ด ํ๋ก์ ํธ๊ฐ ๋น์ ์ด ์ฐพ๊ณ ์๋ ์ฌ๋ฏธ๋ฅผ ๊ฐ์ ธ๋ค ์ฃผ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค ๐
@aivascu ์ ๋ ๊ด๋ฆฌ์๋ ์๋์ง๋ง ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ข์ํฉ๋๋ค. ์๊ฐ์ ๋์ด๋ฆด ์ฌ๋์ด ํ์ํ๋ฉด ์ ์๊ฒ ํ์ ๋ณด๋ด์ฃผ์ธ์.
@ploeh , @aivascu , ๊ด์ฐฎ์ต๋๋ค :+1: :rocket:
๋ด๊ฐ ์์ , ์์ฑ ๋๋ ๊ธฐ์ฌํ ์ฝ๋ ๊ธฐ๋ฐ ๋ถ๋ถ์ ๋ํด ํ ๋ก ํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ๋ด๊ฐ ์ธ๊ธ๋ ํ ๋ฆฌํ์คํธ(๋๋ ๋ฌธ์ )๋ฅผ ๋์น ๊ฒฝ์ฐ ์๋ ค์ฃผ์ญ์์ค.
@aivascu ํ์ด ์ ๋น๋๋ค. ๋ด ์ ์ผํ ์กฐ์ธ์ ํนํ ํ ๊ณณ์ ๋ช
ํํ "์ํคํ
์ฒ ๊ฒฐ์ ๊ธฐ๋ก"์ด ์๋ ๊ฒฝ์ฐ ์ฝ๋๋ฒ ์ด์ค์ ์ฝ๋ 20,000์ค๋ง๋ค ์ฝ 6๊ฐ์์ด ๊ฑธ๋ฆด ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๋ฌํ ์ด์ ๋ก ๋ด๊ฐ ์ ์ง ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ์์ ์ฌ๋๋ค์ด ์ฝ๋์ "์คํ์ผ"์ ์ดํดํ ์ ์๋๋ก ์์ฑํ๊ธฐ ์์ํ์ต๋๋ค. Mark๋ ์ด๊ฒ๋ค์ ์์ฑํ์ง๋ง ๋๋ถ๋ถ ๊ทธ์ ๋ธ๋ก๊ทธ ๋ฐ/๋๋ StackOverflow์ ์์ต๋๋ค. @moodmosaic ๋ ๋ง์ฐฌ๊ฐ์ง์์ต๋๋ค. ์ ๋ ์์ผ๋ก ๋ชจ๋ ๋์์ธ ๊ทผ๊ฑฐ๋ฅผ ๋ฌธ์ํํ๋ adr
ํด๋๋ฅผ repo ๋ฃจํธ์ ์์ฑํ๋ค๊ณ ๋งํ๊ณ ์ถ์ต๋๋ค. ์ด๋ฅผ ์ํด .md ํ์ผ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ณต์กํ ํ
์ด๋ธ์ ๊ฒฝ์ฐ ๋งํฌ๋ค์ด ํ
์ด๋ธ ๋์ html ํ
์ด๋ธ์ ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋ปํ๊ฒ ๋ง์์ฃผ์ ๋ชจ๋ ๋ถ๋ค๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์ฒ์์๋ @jzabroski ์ ์กฐ์ธ์ ๋ฐ์ ์ ์ ์ง ๊ด๋ฆฌ์์ ๊ธฐ์ฌ์๊ฐ ๋ ์ฝ๊ฒ ์จ๋ณด๋ฉํ ์ ์๋๋ก ๋ฌธ์ ์ ๊ณต๋ฐฑ์ ์ฑ์ฐ๊ธฐ ์์ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๋์์ ๊ธฐ์กด ๋ฐฑ๋ก๊ทธ๋ฅผ ํตํด ๋ ์ฝ๋ฉ์ ์์ํ ์ ์์ต๋๋ค.
๋ฐ๋ผ๊ฑด๋ ๋ ๋ง์ ์ปค๋ฎค๋ํฐ ํ์์ด ์ด ๋๋ผ์ด ๋๊ตฌ๋ฅผ ๋ฐ์ ์ํค๊ธฐ ์ํด ๋์๊ฒ ๋ ๊ฒ์
๋๋ค.
@aivascu๋ ์ถํํฉ๋๋ค.
๋๋ ๋น์ ์ด ์ง๊ธ ์์ ๊ฐ๋ฐ์๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ด๊ฐ ์ด ๋ง์ ํ๋ ๊ฒ์ ๋น์ ์ด ๋ฉ์ถ๋ ์ฆ์ ๋ชจ๋ ๊ฒ์ด ์ง๊ธ์ '์ฃฝ์' ์ํ๋ก ๋์๊ฐ ๊ฒ์ด๋ผ๊ณ ๋๋ผ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋์ ๋๋ ์ง๊ธ ๋น์ ์ ๋ณด๊ณ ์์ต๋๋ค :)
Autofixture ํ์ด ์ด์ ์ ์ธ๊ธํ ์ธ๋ก์ด ์ฌ์ ๋ฌธ์ ์ ์ํ์ ์ํํ๊ธฐ ์ํด ์ ํ์์ '์ฌ๋ฅ'ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋๊ตฐ๊ฐ ์ด https://github.com/AutoFixture/AutoFixture/pull/1164๋ฅผ ๋ณผ ์ ์๋ ๊ฒฝ์ฐ์๋ง ๊ธฐ์ฌํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค.
@aivascu ํต์ฌ AutoFixture ํ์ ํฉ๋ฅํ๋ผ๋ ์ด๋์ฅ์ ๋ณด๋์ง๋ง ์ด๋์ฅ์ ์์ง ๋ณด๋ฅ ์ค์ ๋๋ค.
@ploeh ๋ฐฉ๊ธ ์ด๋๋ฅผ ์๋ฝํ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
@aivascu ๐ ํ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค.
๋ ๋ง์ ๋์์ ๋๋ฆด ์ ์๋ค๋ฉด ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๋ช ๋ ๋์ ์ด ํ๋ก์ ํธ์์ ๋นํ๋์ ์ด์ด์ ์ค์ฉ์ ์ธ ๊ฒ๋ค์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ๋ ์ด์ ๋ชจ๋ฆ ๋๋ค. @zvirja ๊ฐ ์ด๋ฌํ ์ธ๋ถ ์ฌํญ์ ์ฑ์์ค ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ฐ์ฌํฉ๋๋ค!
ํ์ํฉ๋๋ค @aivascu
@aivascu ํ๋ก์ ํธ์ ์ฐธ์ฌํ๊ฒ ๋์ด ๊ธฐ์ฉ๋๋ค. ์ค๋ก๊ฐ ๋์ง ์๋๋ค๋ฉด ์์ฑ ๋ํ๋ฅผ ํตํด ๋ชจ๋ ๊ฒ์ ๋ณด์ฌ์ฃผ๊ณ ์ง๋ฌธ์ ๋ตํด ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ทธ๋ด ์ํฅ์ด ์๋ค๋ฉด ์ธ๋ถ ์ฌํญ์ ๋์ํ ์ ์๋๋ก ๋ฉ์ผ์ ๋ณด๋ด์ฃผ์ธ์(์ปค๋ฐ์์ ์ฃผ์๋ฅผ ์ฐพ์ ์ ์์).
๊ทธ๋ฆฌ๊ณ ๋ค์ ํ์ํฉ๋๋ค.
@zvirja ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค. ๋๋ ๋น์ ์๊ฒ ์ด๋ฉ์ผ์ ๋๋กญํฉ๋๋ค.
ํ์ํฉ๋๋ค @aivascu :+1:
ํ์น์ ํ์ํฉ๋๋ค, @aivascu! ๐
@aivascu ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด์ ๊ณผ ์๋์ง๋ก ๊ฐ๋ ์ฐฌ ์๋ก์ด ๊ด๋ฆฌ์๋ก ์ฌ๋ผ์ฐ๋ค๋ฉด ์ด ๋ฌธ์ ๋ฅผ ๋ซ๊ณ ๊ณ ์ ํด์ ํด์ผ ํฉ๋๊น? ํ์ฌ๋ก์๋ ์ฐ๋ฆฌ์ ๋ฏธ๋๊ฐ ์ ํด์ ธ ์๋ค๋ ๋ง์ ๋๊น? ๐
@zvirja ๋๋ ๋ค๋ฅธ ๋๊ตฐ๊ฐ๊ฐ ๊ด๋ฆฌ์์ ์์๋ฅผ ์ฑ์ฐ๋๋ก ์์ฒญํ ์ ์๊ธฐ๋ฅผ ๋ฐ๋์ต๋๋ค. ๐
๋๊ตฌ๋ ์ง ์ด ์ ์ฅ์์ ๊ด๋ฆฌ์๊ฐ ๋๋ ๊ฒ์ ์ฆ๊ธด๋ค๊ณ ์๊ฐ๋๋ฉด ๋ฌธ์ ๋ฅผ ์ด๊ฑฐ๋ ๋ฉ์์ง๋ฅผ ๋ณด๋ด์ฃผ์ญ์์ค.
์ด์ ๋ฌธ์ ๋ฅผ ์ข
๋ฃํ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ ์๋ค์!
์ฌ๊ธฐ์๋ ์ ํผ๋๋ฐฑ์ด ์์ต๋๋ค. ๊ณต์์ ์ผ๋ก๋ ์๋์ง๋ง ํ์ฌ๋ก์๋ ๋ด๊ฐ ํ๋ก์ ํธ์์ ๊ฐ์ฅ ํ๋์ ์ธ/๋ฆฌ๋ ๋ฉ์ธํ ์ด๋์์ ๊ฒ์ด๋ผ๋ ๊ธฐ๋๊ฐ ์์ ๊ฒ์ ๋๋ค.
์ฒ์์๋ ์ ์ง ๊ด๋ฆฌ์ ๋งค์ฐ ์ด์ ์ ์ด์๊ณ ๋ ๊ฐ์ ํ ์ ์๋ ์์ด๋์ด๊ฐ ๊ฑฐ์ ์์์ต๋๋ค. ์ค๋๋ ์๋ ์ต์ํ ์ ์ง ๊ด๋ฆฌ ๊ด์ ์์(์: .NET Standard 1.x ์ง์ ์ค๋จ) ํด์ผ ํ ์ผ์ ๋ด ๋๋ค.
์ต๊ทผ์ ๋๋ ํ๋ก์ ํธ ์ง์์์ ๋ฌผ๋ฌ๋ฌ๊ณ ์ด์ ๋ํ ๋ช ๊ฐ์ง ์ด์ ๋ฅผ ์ค์ค๋ก ํ์ธํ์ต๋๋ค.
๋ฉด์ฑ ์กฐํญ : ๋ชฉ์ ์ ๋๊ตฌ๋ฅผ ๋น๋ํ๋ ๊ฒ์ด ์๋๋ฏ๋ก ๊ฐ์ธ์ ์ผ๋ก ์ดํดํ์ง ๋ง์ญ์์ค. ์คํ๋ ค ์ ๊ฒฝํ์ ๊ณต์ ํ์ฌ ์ด์ ๋ํด ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ผ์ด ์๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ๋งํ ๊ฐ์น๊ฐ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
ํ๋ก์ ํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ๋ชจ๋๊ฐ Mark๊ฐ ๋จ๊ธด ์ ์ฐ์ ๋ณด์กดํ๋ ค๊ณ ํ๋ค๋ ๊ฐํ ๋๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. Mark๊ฐ ํ๋ ค๋ ๊ฒ ์ธ์๋ ๋ค๋ฅธ ๊ฒ์ ์๋ํ ์์ ๊ฐ ์์ต๋๋ค. Mark๋ ์ง์ ์ฐธ์ฌํ์ง ์์ ๊ฑฐ์ ๋ชจ๋ PR์์ ์ธ์ฉ๋์์ต๋๋ค. :)
์ด๋ ์์ ์์ ๋๋ ์ฌ๊ธฐ์์ ๋ฌด์์ด๋ ์์ ํ๋ ๊ฒ์ด ๋๋ฌด ์ด๋ ค์์ก๋ค๋ ๊ฒ์ ๋๋ผ๊ธฐ ์์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ด๊ฐ ํ๋ก์ ํธ์ ๋ํ ์ด์ ์ ์ฃฝ์์ต๋๋ค.
Mark๋ ๋ ๋ฌ์ง๋ง ์ฌ์ ํ ๊ฐ์ธ์ ์ผ๋ก ํ๋ก์ ํธ์ ์์ ๊ถ์ ์ฌ์ ํ โโ๊ทธ์๊ฒ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. Mark๊ฐ ๋ฉ์ง๊ฒ ๋ง๋ ๋ฌด์ธ๊ฐ๋ฅผ ํญ๋ ฅ์ ์ด๊ณ ์ผ๋ง์ ์ผ๋ก ๊นจ๋จ๋ฆด ๊ธฐํ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ๋ง์ ๋ด๋ถ/์ธ๋ถ ์๋ ฅ์ ๋๋๋๋ค. ์ด ์ธ์ ์ค ์ผ๋ถ๋ ๋ด๊ฐ ๋จ๋ ์ผ๋ก ๋ง๋ ๊ฒ์ด์ง๋ง ๋ค๋ฅธ ์ ์ง ๊ด๋ฆฌ์๊ฐ ๊ทธ๋ฌํ ์ธ์์ ์ฃผ๋ ๋ฐ ๊ธฐ์ฌํ ๋ถ๋ถ์ด ์์ต๋๋ค.
์๋ง๋ ๋ด ๊ธฐ๋์ ํ์ค์ ์ฐจ์ด ์ผ๋ฟ์ ๋๋ค. ๋๋ ์ด ํ๋ก์ ํธ๋ฅผ ํตํด ๋ด ์์ด๋์ด๋ฅผ ํํํ๊ณ ์๋ํ ์ ์๊ณ , ๋ฏผ์ฒฉํ๊ณ ์ ์ ํ๋ฉฐ ์๋ก์ด ๊ธฐ๋ฅ์ผ๋ก ๊ฐ๋ ์ฐจ๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ค์ ๋ก๋ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ๊ธฐ ๋๋ฌธ์ ๋ง์ ๋ณ๊ฒฝ์ด ํ์ฉ๋์ง ์๋ ๋ ๊ฑฐ์ ํ๋ก์ ํธ์ฒ๋ผ ๋๊ปด์ก์ต๋๋ค.
๋๋ ๋ด ์ ์ ์ค ์ผ๋ถ๊ฐ ์ด์์ ์ด์ง ์์ ์ ์์์ ์ธ์ ํ๋ฉฐ, ๋ฌผ๋ก ๋๋ ์กด๊ฒฝํ ๋งํ Mark๋งํผ ๊ฒฝํ์ด ๋ง์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๊ฒฐ์ ์ ๋ด๋ฆด ๋ ๋ ์์ ๋ก์ธ ์ ์์๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ๊ฐ ๋ ์์ํ์ต๋๋ค.
์ข ์ธ๋กญ๋ค
ํ๋ก์ ํธ์ ํฉ๋ฅํ์ ๋ ๋ฌด์๋ณด๋ค๋ ๋ฏผ์ฒฉํ ํ ๋ก ์ ์ฐธ์ฌํ๊ณ ํ์ ์ผ์์ด ๋๊ณ ๋ค๋ฅธ ์ฌ๋๋ค๊ณผ ์ด์ธ๋ฆฌ๊ธฐ๋ฅผ ๊ธฐ๋ํ์ต๋๋ค. ๋ถํํ๋, ์๊ฐ์ ์ด ๋ฐ/๋๋ ๊ธฐํ ์์ธ์ผ๋ก ์ธํด ๋ค๋ฅธ ์ ์ง ๊ด๋ฆฌ์๊ฐ ํ ๋ก ์ ๋๋ฌด ๋ง์ด ์ฐธ์ฌํ์ง ์์๊ณ ๊ฒฐ๊ตญ ๋๋ ์ฌ๊ธฐ์์ ํผ์๋ผ๋ ๋๋์ด ๋ค๊ธฐ ์์ํ์ต๋๋ค. ๋ค๋ฅธ ๊ด๋ฆฌ์๋ค์ด ํ์ฌ ์ด ํ๋ก์ ํธ์ ๋ํด ๋๋ฌด ๋ง์ ์๊ฐ/์ด์ ์ด ์๋ค๊ณ ์๊ฐํ์ฌ ๋ง์นจ๋ด ๊ฐ์ ๊ฒ์ ๊ณต์ ํ๊ธฐ ์์ํ์ต๋๋ค.
๋๋ ์ง๊ธ AutoFixture๋ก ํ๋ฐํ๊ฒ ์ผํ๊ณ ์์ง ์์ต๋๋ค.
์ง๊ธ์ ๋ฐฑ์๋ ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํ์ง ์์ผ๋ฏ๋ก AutoFixture๋ฅผ ๋๋ฌด ๋ง์ด ์ฌ์ฉํ์ง ๋ง์ญ์์ค. ๋๋ ์ฌ์ ํ ์ด ํ๋ก์ ํธ์ ํฐ ์ฌ๋ฏธ๋ฅผ ๋๋ผ๊ณ ์์ผ๋ฉฐ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ผญ ์์ด์ผ ํ๋ค๊ณ ๋ฏฟ์ต๋๋ค. ํ์ง๋ง ํ ์คํธ๋ฅผ ๋๋ฌด ๋ง์ด ์์ฑํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ธ์ ์ผ๋ก ๋ณ๊ฒฝ์ ์๊ตฌํ์ง ์์ต๋๋ค.
๋ ๋์๊ฐ ๋๋ ํ๋ก์ ํธ ์ํ์ ์ฐธ์ฌํ๊ณ ์ ์ฉ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ด ์ง์์ ๊ณต์ ํ๋ ๊ฒ์ ๊บผ๋ คํ์ง ์์ต๋๋ค. ํ์ํ ๊ฒฝ์ฐ ์ฝ๋/์ ์ง ๊ด๋ฆฌ๋ ๋์๋๋ฆด ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ถํํ๋ ํ์ฌ๋ก์๋ ์์ ์ ์ง ๊ด๋ฆฌ์๊ฐ ๋ ๋งํผ์ ์ด์ ๊ณผ ์๋์ง๊ฐ ์์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ ๋ขฐํ๊ณ ์ด์ ์ด ๋์น๋ ํ๋ณด๊ฐ ์๋ค๋ฉด ๋ฐ๋์ ์ด๋ํ์ฌ ์ ์ง ๊ด๋ฆฌ์ธ์ผ๋ก ์ผ์์ผ ํฉ๋๋ค.