Autofixture: AutoFixture์˜ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2020๋…„ 02์›” 24์ผ  ยท  40์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: AutoFixture/AutoFixture

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„,

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์‚ฌ๋ž‘ํ•˜๊ณ  ์•ž์œผ๋กœ์˜ ๊ณ„ํš์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ์ด ํ˜ธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ์œ ์ง€ ๊ด€๋ฆฌ์ž ์ค‘ ๋ˆ„๊ตฌ๋„ ๋ฌธ์ œ ๋ฐ pull ์š”์ฒญ์— ์‘๋‹ตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ๋ฒ„๋ ค์ง„ ๋Š๋‚Œ์ด ๋“ญ๋‹ˆ๋‹ค.

@ploeh @zvirja @ecampidoglio @moodmosaic @adamchester

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…• ์–˜๋“ค์•„!

์—ฌ๊ธฐ์—๋„ ์ œ ํ”ผ๋“œ๋ฐฑ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ณต์‹์ ์œผ๋กœ๋Š” ์•„๋‹ˆ์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” ๋‚ด๊ฐ€ ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐ€์žฅ ํ™œ๋™์ ์ธ/๋ฆฌ๋“œ ๋ฉ”์ธํ…Œ์ด๋„ˆ์˜€์„ ๊ฒƒ์ด๋ผ๋Š” ๊ธฐ๋Œ€๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฒ˜์Œ์—๋Š” ์œ ์ง€ ๊ด€๋ฆฌ์— ๋งค์šฐ ์—ด์ •์ ์ด์—ˆ๊ณ  ๋” ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ด๋””์–ด๊ฐ€ ๊ฑฐ์˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚ ์—๋„ ์ตœ์†Œํ•œ ์œ ์ง€ ๊ด€๋ฆฌ ๊ด€์ ์—์„œ(์˜ˆ: .NET Standard 1.x ์ง€์› ์ค‘๋‹จ) ํ•ด์•ผ ํ•  ์ผ์„ ๋ด…๋‹ˆ๋‹ค.

์ตœ๊ทผ์— ๋‚˜๋Š” ํ”„๋กœ์ ํŠธ ์ง€์›์—์„œ ๋ฌผ๋Ÿฌ๋‚ฌ๊ณ  ์ด์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๋ฅผ ์Šค์Šค๋กœ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉด์ฑ… ์กฐํ•ญ : ๋ชฉ์ ์€ ๋ˆ„๊ตฌ๋ฅผ ๋น„๋‚œํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ ๊ฐœ์ธ์ ์œผ๋กœ ์ดํ•ดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์˜คํžˆ๋ ค ์ œ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•˜์—ฌ ์ด์— ๋Œ€ํ•ด ์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ผ์ด ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋งŒํ•œ ๊ฐ€์น˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ๋ชจ๋‘๊ฐ€ Mark๊ฐ€ ๋‚จ๊ธด ์œ ์‚ฐ์„ ๋ณด์กดํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๊ฐ•ํ•œ ๋Š๋‚Œ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. Mark๊ฐ€ ํ•˜๋ ค๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋‹ค๋ฅธ ๊ฒƒ์„ ์‹œ๋„ํ•  ์ž์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Mark๋Š” ์ง์ ‘ ์ฐธ์—ฌํ•˜์ง€ ์•Š์€ ๊ฑฐ์˜ ๋ชจ๋“  PR์—์„œ ์ธ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. :)

์–ด๋Š ์‹œ์ ์—์„œ ๋‚˜๋Š” ์—ฌ๊ธฐ์—์„œ ๋ฌด์—‡์ด๋“  ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์ด ๋„ˆ๋ฌด ์–ด๋ ค์›Œ์กŒ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๋ผ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‚ด๊ฐ€ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์—ด์ •์„ ์ฃฝ์˜€์Šต๋‹ˆ๋‹ค.

Mark๋Š” ๋– ๋‚ฌ์ง€๋งŒ ์—ฌ์ „ํžˆ ๊ฐœ์ธ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์˜ ์†Œ์œ ๊ถŒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ทธ์—๊ฒŒ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. Mark๊ฐ€ ๋ฉ‹์ง€๊ฒŒ ๋งŒ๋“  ๋ฌด์–ธ๊ฐ€๋ฅผ ํญ๋ ฅ์ ์ด๊ณ  ์•ผ๋งŒ์ ์œผ๋กœ ๊นจ๋œจ๋ฆด ๊ธฐํšŒ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ ๋งŽ์€ ๋‚ด๋ถ€/์™ธ๋ถ€ ์••๋ ฅ์„ ๋Š๋‚๋‹ˆ๋‹ค. ์ด ์ธ์‹ ์ค‘ ์ผ๋ถ€๋Š” ๋‚ด๊ฐ€ ๋‹จ๋…์œผ๋กœ ๋งŒ๋“  ๊ฒƒ์ด์ง€๋งŒ ๋‹ค๋ฅธ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๊ทธ๋Ÿฌํ•œ ์ธ์ƒ์„ ์ฃผ๋Š” ๋ฐ ๊ธฐ์—ฌํ•œ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ๋„ ๋‚ด ๊ธฐ๋Œ€์™€ ํ˜„์‹ค์˜ ์ฐจ์ด ์ผ๋ฟ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋‚ด ์•„์ด๋””์–ด๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฏผ์ฒฉํ•˜๊ณ  ์‹ ์„ ํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ€๋“ ์ฐจ๊ฒŒ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ๋กœ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ๋ณ€๊ฒฝ์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๋ ˆ๊ฑฐ์‹œ ํ”„๋กœ์ ํŠธ์ฒ˜๋Ÿผ ๋Š๊ปด์กŒ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‚ด ์ œ์•ˆ ์ค‘ ์ผ๋ถ€๊ฐ€ ์ด์ƒ์ ์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ์„ ์ธ์ •ํ•˜๋ฉฐ, ๋ฌผ๋ก  ๋‚˜๋Š” ์กด๊ฒฝํ•  ๋งŒํ•œ Mark๋งŒํผ ๊ฒฝํ—˜์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ ๋” ์ž์œ ๋กœ์šธ ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๊ฐ€ ๋” ์ƒ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ข€ ์™ธ๋กญ๋‹ค

ํ”„๋กœ์ ํŠธ์— ํ•ฉ๋ฅ˜ํ–ˆ์„ ๋•Œ ๋ฌด์—‡๋ณด๋‹ค๋„ ๋ฏผ์ฒฉํ•œ ํ† ๋ก ์— ์ฐธ์—ฌํ•˜๊ณ  ํŒ€์˜ ์ผ์›์ด ๋˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๊ณผ ์–ด์šธ๋ฆฌ๊ธฐ๋ฅผ ๊ธฐ๋Œ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ถˆํ–‰ํžˆ๋„, ์‹œ๊ฐ„์˜ ์šด ๋ฐ/๋˜๋Š” ๊ธฐํƒ€ ์š”์ธ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ํ† ๋ก ์— ๋„ˆ๋ฌด ๋งŽ์ด ์ฐธ์—ฌํ•˜์ง€ ์•Š์•˜๊ณ  ๊ฒฐ๊ตญ ๋‚˜๋Š” ์—ฌ๊ธฐ์—์„œ ํ˜ผ์ž๋ผ๋Š” ๋Š๋‚Œ์ด ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ด€๋ฆฌ์ž๋“ค์ด ํ˜„์žฌ ์ด ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„/์—ด์ •์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ๋งˆ์นจ๋‚ด ๊ฐ™์€ ๊ฒƒ์„ ๊ณต์œ ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ง€๊ธˆ AutoFixture๋กœ ํ™œ๋ฐœํ•˜๊ฒŒ ์ผํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ AutoFixture๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด ํ”„๋กœ์ ํŠธ์— ํฐ ์žฌ๋ฏธ๋ฅผ ๋Š๋ผ๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ผญ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์ธ์ ์œผ๋กœ ๋ณ€๊ฒฝ์„ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๋” ๋‚˜์•„๊ฐ€ ๋‚˜๋Š” ํ”„๋กœ์ ํŠธ ์ƒํ™œ์— ์ฐธ์—ฌํ•˜๊ณ  ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฝ”๋“œ/์œ ์ง€ ๊ด€๋ฆฌ๋„ ๋„์™€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆํ–‰ํžˆ๋„ ํ˜„์žฌ๋กœ์„œ๋Š” ์ˆ˜์„ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋  ๋งŒํผ์˜ ์—ด์ •๊ณผ ์—๋„ˆ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‹ ๋ขฐํ•˜๊ณ  ์—ด์ •์ด ๋„˜์น˜๋Š” ํ›„๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ดˆ๋Œ€ํ•˜์—ฌ ์œ ์ง€ ๊ด€๋ฆฌ์ธ์œผ๋กœ ์‚ผ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  40 ๋Œ“๊ธ€

@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๋กœ ํ™œ๋ฐœํ•˜๊ฒŒ ์ผํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ์€ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ๋งŽ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ AutoFixture๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ๋‚˜๋Š” ์—ฌ์ „ํžˆ ์ด ํ”„๋กœ์ ํŠธ์— ํฐ ์žฌ๋ฏธ๋ฅผ ๋Š๋ผ๊ณ  ์žˆ์œผ๋ฉฐ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๊ผญ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์ธ์ ์œผ๋กœ ๋ณ€๊ฒฝ์„ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๋” ๋‚˜์•„๊ฐ€ ๋‚˜๋Š” ํ”„๋กœ์ ํŠธ ์ƒํ™œ์— ์ฐธ์—ฌํ•˜๊ณ  ์ ์šฉ ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋‚ด ์ง€์‹์„ ๊ณต์œ ํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฝ”๋“œ/์œ ์ง€ ๊ด€๋ฆฌ๋„ ๋„์™€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ถˆํ–‰ํžˆ๋„ ํ˜„์žฌ๋กœ์„œ๋Š” ์ˆ˜์„ ์œ ์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ๋  ๋งŒํผ์˜ ์—ด์ •๊ณผ ์—๋„ˆ์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‹ ๋ขฐํ•˜๊ณ  ์—ด์ •์ด ๋„˜์น˜๋Š” ํ›„๋ณด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ดˆ๋Œ€ํ•˜์—ฌ ์œ ์ง€ ๊ด€๋ฆฌ์ธ์œผ๋กœ ์‚ผ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋จผ์ € #703 ํ† ๋ก ์—์„œ ์—ฐ๋ฝ์„ ๋“œ๋ฆฌ์ง€ ๋ชปํ•œ @AutoFixture/core ํŒ€์— ์‚ฌ๊ณผํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋„ค, ๋ฐ”์œ ์‹œ๊ฐ„์ด์—ˆ์ง€๋งŒ(์ง€๊ธˆ๋„ ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค) ์ œ๊ฐ€ ๋„ˆ๋ฌด ๋ฐ”๋น ์„œ ๋‹ต์žฅ์„ ๋ชป ๋“œ๋ฆฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด ์–ธ๊ธ‰์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ฐ›์ง€ ๋ชปํ–ˆ๊ณ  ํ† ๋ก ์„ ๋‹ค์‹œ ํ™•์ธํ•  ์ƒ๊ฐ๋„ ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” #703์„ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜๋ฉด์„œ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋ฐฉ๊ธˆ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ˜ž

AutoFixture์˜ ๋ฏธ๋ž˜์— ๋Œ€ํ•œ ๋‚˜์˜ ์ž…์žฅ ์€ 2016๋…„์— ๋‚ด๊ฐ€ ํ‘œํ˜„ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” AutoFixture๊ฐ€ ๊ฝค ์•ˆ์ •์ ์ด๋ฉฐ ๋ช‡ ๋…„ ๋™์•ˆ ์‚ฌ์šฉ๋˜์–ด ์™”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ  ์‹ถ๋‹ค๋ฉด ๊นจ๋—ํ•œ ์ƒํƒœ์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ž๋™ ์ƒ์„ฑ ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์˜ ๊ฐœ๋…์€ ๋งค์šฐ ์ข‹์€ ๊ฒƒ์ด๋ฉฐ AutoFixture๋Š” ํ™•์‹คํžˆ .NET ํ”Œ๋žซํผ์—์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” _์œ ์ผํ•œ_ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค.

AutoFixture์— ๋ฒ„๊ทธ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ ์œ ์ง€ ๊ด€๋ฆฌ์˜ ์–‘๊ณผ ๋ฒ”์œ„๊ฐ€ @AutoFixture/core ํŒ€์˜ ์ฑ…์ž„์œผ๋กœ ๋‚จ์„ ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ž‘๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ˆ˜์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ? ์˜คํ”ˆ ์†Œ์Šค์˜ ์—ญ์‚ฌ ๋Š” ๊ฐœ๋ณ„ ๋ฆฌ๋“œ๊ฐ€ ์—†๋Š” ํ”„๋กœ์ ํŠธ๋Š” ๊ฒฐ๊ตญ ํฌ๊ธฐํ•  ๊ฒƒ์ž„์„ ์‹œ์‚ฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฆฌ๋“œ ๊ทธ๋ฃน์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ž„๋ช…๋œ ๋ฆฌ๋“œ๋ฅผ ๋บ€ ํ˜„์žฌ ๋ชจ๋ธ๋กœ ๋‚˜์•„๊ฐ€๊ณ  ๊ทธ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ง„ํ–‰๋˜๋Š”์ง€ ๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ•œ๋‹ค๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

AutoFixture๋Š” ์ •๋ง ์ข‹์€ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์„œ์„œํžˆ ์‚ฌ๋ผ์ง€๋Š” ๋ชจ์Šต์„ ๋ณด๋ฉด ๋งค์šฐ ์Šฌํ”Œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@zvirja ๋Š” ํ”„๋กœ์ ํŠธ์˜ ๊ฐ€์žฅ ํ™œ๋™์ ์ธ/๋ฆฌ๋“œ ์œ ์ง€ ๊ด€๋ฆฌ์ž์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฐ€ ์ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ฐœ์ „ํ• ์ง€ ์ด๋Œ์–ด๊ฐ€๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋ ค๋ฉด ๋งŽ์€ ๋…ธ๋ ฅ๊ณผ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ๊บผ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @zvirja

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฐฉ์— ์žˆ๋Š” ์ฝ”๋ผ๋ฆฌ๋ฅผ ์ง€์ ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋‚˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์Šค๋ ˆ๋“œ๋Š” ์žฅ๋ก€์‹(๋˜๋Š” ํšŒ๊ณ ์ „)๊ณผ ๋งŽ์ด ๋น„์Šทํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ์šฐ๋ฆฌ(์ปค๋ฎค๋‹ˆํ‹ฐ)๊ฐ€ ์‚ฌ๊ณผ๋ฅผ ๋˜์ง€๋Š” ๊ฒƒ๋ณด๋‹ค ์šฐ๋ฆฌ๊ฐ€ ์ฒ˜ํ•œ ์ƒํ™ฉ์—์„œ ํƒˆ์ถœ๊ตฌ๋ฅผ ์ฐพ๋Š” ๋ฐ ๋” ์ง‘์ค‘ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ง€๊ธˆ๊นŒ์ง€ ์ด ์Šค๋ ˆ๋“œ๋Š” ๋ฌธ์ œ๋ฅผ ์ง€์ ํ•˜๋Š” ๋ฐ ๋งค์šฐ ํ›Œ๋ฅญํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ํ˜„์žฌ ๊ด€๋ฆฌ์ž๋Š” ์‹œ๊ฐ„์ด ์—†์Šต๋‹ˆ๋‹ค/ํ”„๋กœ์ ํŠธ์— ๊ด€์‹ฌ์ด ์—†์Šต๋‹ˆ๋‹ค
  2. ํ”„๋กœ์ ํŠธ๋Š” ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ต๋‹ค
  3. ์ฝ”๋“œ ๊ฒ€ํ† ๊ฐ€ ๋„ˆ๋ฌด ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.

์ด์ œ ์šฐ๋ฆฌ๊ฐ€ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ์น˜ ๋ชฉ๋ก์„ ๋งŒ๋“ค์–ด ๋ณผ๊นŒ์š”?

๋ˆ„๊ตฐ๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์— ๋‚ด ์˜๊ฒฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ƒˆ๋กœ์šด ํšŒ์›์„ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋ฐ›์•„๋“ค์ž…๋‹ˆ๋‹ค. @Kralizek ์€ ์ž ์‹œ ๋™์•ˆ ์ฃผ๋ณ€์— ์žˆ์—ˆ๊ณ  ๊ทธ๋Š” ์ข‹์€ ํ›„๋ณด์ž์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @AutoFixture/core์™€ ํ•จ๊ป˜ ๋‹ค๋ฅธ ํŒ€์ด ์žˆ์Šต๋‹ˆ๊นŒ?
  2. ๋ฌธ์ œ ๋ฐฑ๋กœ๊ทธ ์ƒ์„ฑ, ์šฐ์„  ์ˆœ์œ„ ์ง€์ •, ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋„์›€ ์š”์ฒญ
  3. ์ฝ”๋“œ ๊ฒ€ํ† ๋ฅผ ๋Š์Šจํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ „ ์†Œ์œ ์ž์—๊ฒŒ ์ง€์†์ ์œผ๋กœ ์†์„ ๋•Œ๋ฆฌ๋ฉด ํ”„๋กœ์ ํŠธ์˜ ์†Œ์œ ๊ถŒ์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    ์‹คํ—˜์„ ์œ„ํ•ด ์ถ”๊ฐ€ ํŒจํ‚ค์ง€ 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 ๋ถ€๋ถ„:

  • Auto-Mocking Container ๋””์ž์ธ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋Šฅ๋ ฅ(์•„๋งˆ๋„ ๋‚ด๊ฐ€ ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ์†Œ๊ฐœ๋ฐ›์€ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ํ…Œ์ŠคํŠธ ๊ฐœ๋…์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค).
  • Fixture.Freeze ๊ต‰์žฅํ•ด
  • ๋ชจ์˜๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์— ๋Œ€ํ•œ ์„ค๋น„๋ฅผ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” AutoMoq ํ™•์žฅ
  • ์—”ํ„ฐํ‹ฐ ๊ฐœ์ฒด ๊ทธ๋ž˜ํ”„๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ณ  ์ผ๋ฐ˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ ํŒจํ„ด์„ ํ…Œ์ŠคํŠธํ•˜๊ณ  Entity Framework ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ข…๋‹จ ๊ฐ„ ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ ์šฉ์„ ๋ณด์žฅํ•˜๋Š” ๊ธฐ๋Šฅ.

์ง์ ‘ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” AutoFixture ๋ถ€๋ถ„:

  • Fixture.Inject

AutoFixture์˜ ๊ฐœ์„ /ํ™•์žฅ์„ ์›ํ•˜๋Š” ๋ถ€๋ถ„

  • ์–ด์ œ ์ƒ์„ฑ๋œ ๋‚ด ๋ฌธ์ œ ๋ณด๊ธฐ: #1179
  • Guids์˜ ๊ธฐ๋ณธ ๋™์ž‘์„ Waffle Text Generator์™€ ๊ฐ™์€ ๋” ๋ฉ‹์ง„ ๊ฒƒ์œผ๋กœ ๊ต์ฒดํ•˜๋Š” ๊ธฐ๋Šฅ. ์˜ค๋Š˜ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ #1179๊ฐ€ ์ž‘์—…๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฐ์ดํ„ฐ ๊ณต๊ธ‰์ž์™€ ํ•จ๊ป˜ ์ž„์˜ ์š”์†Œ ์„ ํƒ๊ธฐ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • AutoFixture๋Š” ๋Š๋ฆฌ๊ณ  Maksim Volkau์˜ DryIoC ํ”„๋กœ์ ํŠธ๊ฐ€ Maksim์˜ FastExpressionCompiler https://github.com/dadhi/FastExpressionCompiler ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ‘œํ˜„ ์ปดํŒŒ์ผ ์†๋„๋ฅผ ๋†’์ด๋Š” ํ˜„๋Œ€์ ์ธ ํŠธ๋ฆญ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ข‹์•„ํ•˜์ง€ ์•Š๋Š” AutoFixture ๋ถ€๋ถ„(๋Œ€๋ถ€๋ถ„ ์‚ฌ์†Œํ•œ):

  • Fixture.CustomizeVisual Studio Intellisense์—์„œ๋Š” ํ•ญ์ƒ ์ž˜๋ชป ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ์ •์˜ ์ž‘์„ฑ ๋ฐ Customize ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†๋Š” ์ด์œ . ๊ทธ๋Ÿฐ ์ข…๋ฅ˜์˜ ๊ฒƒ๋“ค์€ ๋ฐ”๋กœํฌ์ ์ด๊ณ  ์„ฑ๊ฐ€์‹œ๋ฉฐ ๊ฑฐ๋Œ€ํ•œ ํ•™์Šต ๊ณก์„ ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ์ปค์Šคํ„ฐ๋งˆ์ด์ง•๊ณผ speciman ๋นŒ๋” ๋ฐ ๋ฌผ๊ฑด์ด ๋„์ฒ˜์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌด์งˆ์„œํ•ฉ๋‹ˆ๋‹ค.
  • ๋ช‡ ๊ฐ€์ง€์— ๋Œ€ํ•œ ์ด์ƒํ•œ ์–ดํœ˜
  • ์ „์ฒด Do..Without ๋””์ž์ธ ํŒจํ„ด์€ ์ต์ˆ™ํ•ด์ง€๊ธฐ๊ฐ€ ๋‹ค์†Œ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜์ง€๋งŒ ์žฅํ™ฉํ•˜๊ณ  ์žฌ๊ท€ ์—”ํ‹ฐํ‹ฐ์— ๋„์›€์ด๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” AutoFixture๊ฐ€ ์ด๋ฏธ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์˜ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋„๋ก ์ง€์‹œํ•˜๋Š” ํŠน๋ณ„ํ•œ ๋™์ž‘์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ฐ˜ ์ž‘์—…์— ๋Œ€ํ•œ ๋‹จ์ˆœํ™”๋œ ๊ตฌ๋ฌธ ์—†์Œ
  • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚ด๋ถ€์— ๋Œ€ํ•œ ๊นŠ์€ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋†€๋ฆฌ์‹ ์„ค๊ณ„. ๋‹น์‹ ์€ ๋‹จ์ง€ ์กฐ๊ฐ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. AutoFixture๊ฐ€ ๋›ฐ์–ด๋‚œ ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ์ดˆ๊ธฐ ํ•™์Šต ๊ณก์„ ์„ ํ†ต๊ณผํ•˜๊ธฐ ์œ„ํ•ด Mark์˜ PluralSight ๊ณผ์ •์„ ๋งŽ์ด ์‹œ์ฒญํ•˜๊ฑฐ๋‚˜ AutoFixture์˜ ์ „๋ฌธ๊ฐ€์ธ ๊ฐœ๋ฐœ์ž์™€ ํ˜‘๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • AutoFixture๋Š” "์ต๋ช… ๊ฐ’"๋งŒ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค๋Š” Mark์˜ ์ž…์žฅ์ž…๋‹ˆ๋‹ค. ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ํƒ€์‚ฌ ์ฝ”๋“œ ์ž‘์„ฑ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์—๋Š” ๋‹ค์Œ StackOverflow ๊ฒŒ์‹œ๋ฌผ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

ํ˜์‹  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๋ถ€ํ’ˆ:

  • C#์ด ์ ์  ๋” ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋ฐœ์ „ํ•จ์— ๋”ฐ๋ผ(ํŒจํ„ด ์ผ์น˜, ๋ ˆ์ฝ”๋“œ ์œ ํ˜• ๋“ฑ) AutoFixture๋Š” F#์˜ FsCheck ๋ฐ Hedgehog์ฒ˜๋Ÿผ ์ ์  ๋” ์ด์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • AutoFixture๊ฐ€ Arb ๊ธฐ๋Šฅ๊ณผ ๊ฐ™์€ FsCheck์˜ ์ผ๋ถ€ concolic ํ…Œ์ŠคํŠธ ๊ฐœ๋…์„ ๊ตฌ์ฒดํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋งค์šฐ ๊ฐ•๋ ฅํ•˜๊ณ  ๋‹ค์–‘ํ•œ ํ…Œ์ŠคํŠธ ์ž…๋ ฅ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก RLCheck์—์„œ ๋…ผ์˜๋œ ๊ฒƒ๊ณผ ๊ฐ™์€ ํ˜์‹ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(Guid as string is a hack!) https://www.carolemieux.com/rlcheck_preprint.pdf

์—ฌ๊ธฐ์—์„œ ์„ค๋ช…ํ•˜๋Š” ๋ฌธ์ œ ์ค‘ ์ผ๋ถ€๋Š” 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 ๋‚˜๋Š” ๋‹ค๋ฅธ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ด€๋ฆฌ์ž์˜ ์ˆœ์œ„๋ฅผ ์ฑ„์šฐ๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„

๋ˆ„๊ตฌ๋“ ์ง€ ์ด ์ €์žฅ์†Œ์˜ ๊ด€๋ฆฌ์ž๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ์ฆ๊ธด๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ๋ฌธ์ œ๋ฅผ ์—ด๊ฑฐ๋‚˜ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด์ฃผ์‹ญ์‹œ์˜ค.
์ด์ œ ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

ploeh picture ploeh  ยท  7์ฝ”๋ฉ˜ํŠธ

zvirja picture zvirja  ยท  8์ฝ”๋ฉ˜ํŠธ

ploeh picture ploeh  ยท  3์ฝ”๋ฉ˜ํŠธ

ecampidoglio picture ecampidoglio  ยท  7์ฝ”๋ฉ˜ํŠธ

mjfreelancing picture mjfreelancing  ยท  4์ฝ”๋ฉ˜ํŠธ