Autofixture: NSubstitute ์˜์กด์„ฑ ์ ‘๊ทผ ๋…ผ์˜

์— ๋งŒ๋“  2017๋…„ 07์›” 21์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: AutoFixture/AutoFixture

ํ˜„์žฌ AutoNSubstitute ํ”„๋กœ์ ํŠธ๋Š” NSubstitute 1.5์— ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ˜„์žฌ ํ†ตํ•ฉ์€ ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์™€ ํ•œ๊ณ„๋ฅผ ์•ˆ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(#720, #592, #707 ๋ฐ #653 ์ฐธ์กฐ). ์ด๋ฅผ ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ NSubstitute 2.0.2 ์—๋งŒ ๋‚˜ํƒ€๋‚œ API๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ธ€๋ฃจ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์ง„ํ–‰ํ• ์ง€ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 1 - ๋‹จ์ผ AutoNSubstitute ํ”„๋กœ์ ํŠธ ์œ ์ง€

์ด ๋ฐฉ๋ฒ•์œผ๋กœ ํ˜„์žฌ AutoNSubstitute ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„์†ํ•˜์ง€๋งŒ NSubstitute ์ข…์†์„ฑ์„ 2.0.2 ๋Š˜๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ v4์—์„œ๋งŒ ์†Œ๊ฐœํ•˜๊ณ  ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํŽ˜์ด์ง€์—์„œ ์„ค๋ช…ํ•˜๋ฏ€๋กœ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

__์žฅ์ :__

  • ์ง€์›ํ•ด์•ผ ํ•  ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‘ ๊ฐœ ์ค„์–ด๋“ญ๋‹ˆ๋‹ค(์ ‘์ฐฉ์ œ + ํ…Œ์ŠคํŠธ) ๐Ÿ˜‰
  • ํ˜ผ๋ž€์ด ์ ์Šต๋‹ˆ๋‹ค. ๋ฒ„๊ทธ ์ˆ˜์ •์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋™์ž‘์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ ˆ๋Œ€ ๋ฒ„์ „์˜ lib๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(์ œ๋„ค๋ฆญ ์ง€์›). v2์—์„œ๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ๋‹ค๋ฅธ ๊ธ€๋ฃจ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋™์ž‘์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ ํ˜„์žฌ ๋ชจ๋“  ๋ฒ„์ „์˜ ๊ธ€๋ฃจ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉ๋ฒ• 2 - AutoNSubstitute2 ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ

๋ณดํ†ต ์šฐ๋ฆฌ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง€์›ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ด ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ž์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ AFAIK ์ด ๊ฒฝ์šฐ ํ”„๋กœ์ ํŠธ์˜ ์กด์žฌ๋Š” ๊ธฐ๋Šฅ ์ œํ•œ์ด ์•„๋‹Œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค(๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์ด๋Š” ๊ฒฝ์šฐ).

__์žฅ์ :__

  • ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  NSubstitute ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ณ„์† ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์›๋ž˜ NSubstitute์— ๋Œ€ํ•œ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์œผ๋ฏ€๋กœ v4๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค(์†”๋ฃจ์…˜์„ ๋‹จ๊ณ„๋ณ„๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Œ). ์‚ฌ์šฉ์ž๋Š” NSubstitute 2์™€ ์ƒˆ๋กœ์šด ๊ธ€๋ฃจ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์–ธ์ œ ์ „ํ™˜ํ• ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

__๋‹จ์ :__

  • AutoNSubstitute ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์—ฌ์ „ํžˆ NSubstitute 2.0.0 ์™€ ํ˜ธํ™˜๋˜๋ฏ€๋กœ ๋‘ ๊ฐœ์˜ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ ๋ฒ„์ „์˜ ๊ธ€๋ฃจ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์œผ๋ฉด ์•ฝ๊ฐ„ ์—‰๋ง์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  AutoNSubstitute v1์˜ ์ƒํ•œ์„ ์„ ์ธ์œ„์ ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๋ฏ€๋กœ ๊ทธ ์ œํ•œ์€ ์ž‘์€ ๊ฑฐ์ง“๋ง์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค ๐Ÿ˜ž

๊ฐœ์ธ์ ์œผ๋กœ ๋‚˜๋Š” ๋‘ ์ ‘๊ทผ ๋ฐฉ์‹ ๋ชจ๋‘์—์„œ ๊ฐ€์น˜๋ฅผ ๋ณด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ๋Œ€ํ•ด ๊ฐ•ํ•œ ์˜๊ฒฌ์„ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ด์ฉ” ์ˆ˜ ์—†์ด ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค๋ฉด 1๋ฒˆ ๋ฐฉ์‹์ด ๋” ๊ฐ„ํŽธํ•˜๊ณ  NSubstitute 2๋ฒˆ ์—๋Š” ํš๊ธฐ์ ์ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์œผ๋ฏ€๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” 1๋ฒˆ ๋ฐฉ์‹์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

@AutoFixture/core ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์„ธ์š”? ;-)

question

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

์˜ˆ, ์œ ์ง€ ๊ด€๋ฆฌํ•  ํ•ญ๋ชฉ์ด ์ ์„์ˆ˜๋ก ์•ž์œผ๋กœ ๋” ์‰ฝ๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” 1์— ํˆฌํ‘œํ•ฉ๋‹ˆ๋‹ค.

1์— ํˆฌํ‘œํ•˜์„ธ์š”.

#832์—์„œ ๊ทธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋”ฐ๋ž์œผ๋ฏ€๋กœ ์ด์ œ ํ†ตํ•ฉ์„ ์œ„ํ•ด NSubstitute 2๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

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