Nunit: ํ”ฝ์Šค์ฒ˜ ๋‚ด์—์„œ ๋ณ‘๋ ฌ๋กœ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ• ์‹คํ–‰

์— ๋งŒ๋“  2014๋…„ 08์›” 05์ผ  ยท  76์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nunit/nunit

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

ํ”ฝ์Šค์ฒ˜๋‚˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ๋ณ‘๋ ฌ๋„ ์ˆ˜์ค€์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ด์ „์— #66์˜ ์ผ๋ถ€์˜€์Šต๋‹ˆ๋‹ค.

done hardfix feature high

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

๋‚ด๊ฐ€ ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ฒ™ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๊ทธ๊ฒƒ์€ 9์›”๊นŒ์ง€๋งŒ ๋‹น์‹ ์„ ๋งŒ์กฑ์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :-)

๊ธฐ๋Šฅ์„ "์˜ˆ์•ฝ"ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜์—ฌ ๋‹ต๋ณ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๋ถ„๊ธฐ์— ํ•œ ๋ฒˆ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋‚˜์˜ค๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์„ (์—ฐ์ดˆ๋ถ€ํ„ฐ) ์‹œ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋ฅผ ๋” ์ž˜ํ•˜๊ฒŒ ๋˜๋ฉด ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์ง€์†์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์› ๋ด‰์‚ฌ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ ๋งค์›” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์ •๋œ ์–‘์˜ ๋…ธ๋ ฅ์€ ์—†์Šต๋‹ˆ๋‹ค. "์–ด์ œ ๋‚ ์”จ" ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด NUnit์— ์†Œ๋น„ํ•ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ์ž์› ๋ด‰์‚ฌ ์ธ์› ์ˆ˜๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

ํƒ€ํ˜‘์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๋ฆด๋ฆฌ์Šค์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ์†Œ์ˆ˜์˜ ๋ฌธ์ œ๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ด์ •ํ‘œ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ์€ ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๊ฒƒ์˜ ์•ฝ 25% ์ด์ƒ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค์˜ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋Š” ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„ ๋˜๋Š” ๊ธฐ๊ปํ•ด์•ผ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ž‘์—…์— ์ „๋…ํ•  ๋•Œ๋งŒ ํ•ด๋‹น ์ด์ •ํ‘œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 3.5 ๋งˆ์ผ์Šคํ†ค์—์„œ ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌด์–ธ๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒฝ์šฐ ๊ฐ€๋” ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์˜ ๊ธ์ •์ ์ธ ์ธก๋ฉด์€ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ œ์‹œ๊ฐ„์— ๋‚˜์˜ฌ ๊ฒƒ์ด๋ผ๊ณ  ์‚ฌ์‹ค์ƒ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ถ€์ •์ ์ธ ์ธก๋ฉด์€ ๊ทธ ์•ˆ์— ๋ฌด์—‡์ด ๋“ค์–ด ์žˆ๋Š”์ง€ ๋งํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :-(

์ด ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•ด... ์ €๋Š” ์šฐ๋ฆฌ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ด๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๋Š” ์ž์œ ๋กญ๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ด ๋ฒ”์œ„์™€ ์–ด๋ ค์›€์˜ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ๋ฐฐ๊ฒฝ โ€‹โ€‹์ง€์‹์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ๋ฐฐ๊ฒฝ์„ ๊ฐ€์ง„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์•ž์œผ๋กœ ๋ช‡ ์ฃผ ์•ˆ์— ์ด๊ฒƒ์„ ์„ ํƒํ•œ๋‹ค๋ฉด, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฆด๋ฆฌ์Šค๊นŒ์ง€ ์™„๋ฃŒ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ถ”์ธกํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ €๋Š” ๋‹ค๋ฅธ ์ผ์„ ํ•˜๋ฉด์„œ ์ด ์ผ์„ ํ•˜๋Š” ๋ฐ ํ•œ ๋‹ฌ ์ •๋„ ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์•„์š”.

์ฃ„์†กํ•˜์ง€๋งŒ ๋” ์ด์ƒ ํ™•์‹คํ•œ ๋‹ต๋ณ€์€ ์—†์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ๋‹ต๋ณ€์€ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์ง“๋ง์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

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

์—…๋ฐ์ดํŠธ: ์ด ๋Œ“๊ธ€๊ณผ ๋‹ค์Œ ๋Œ“๊ธ€์€ ๋ชจ๋‘ ๋ถ„๋ช…ํžˆ ์ž์‹ ์˜ ๋Œ“๊ธ€์„ ์‚ญ์ œํ•œ ๊ฐœ์ธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ต์„ ๋‚จ๊น๋‹ˆ๋‹ค.

๊ธ€์Ž„, ๊ทธ๊ฒƒ์€ ์‚ฌ์–‘์— ์žˆ์œผ๋ฉฐ 3.0 ์ดํ›„ ๊ตฌํ˜„์„ ์œ„ํ•ด ์˜ˆ์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๊ทธ๋ ‡๊ฒŒ ์‰ฌ์› ๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ์•„๋งˆ ํ•ด๋ƒˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. mbunit๊ณผ ์–ด๋–ค ์—ฐ๊ฒฐ์ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ๊ฐ€์กŒ๋‹ค๋Š” ์‚ฌ์‹ค์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์กฐ๊ธˆ ์ง€๋ฃจํ•ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ์–ธ๊ธ‰๋˜์—ˆ์ง€๋งŒ ๋ถ„๋ช…ํžˆ ๋†“์นœ ๋ช‡ ๊ฐ€์ง€ ์š”์  ...

  1. ๋‹น์‹ ์ด ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ํŠน์ • ์‹œ์ ์— ์ผ์ •์„ ์žก๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  3. ์ผ์ •์ด ์–ธ์ œ์ธ์ง€๋Š” ์ฃผ๋กœ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ๊ณผ ๋น„๊ตํ•˜์—ฌ ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ๊ฐ€์น˜๋ฅผ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  4. NUnit ํŒ€์—๋Š” ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฌ ๋ช… ์žˆ์Šต๋‹ˆ๋‹ค.
  5. ๊ทธ๋“ค์€ ์šฐ์„  ์ˆœ์œ„์— ๋”ฐ๋ผ ๋จธ๋ฆฌ ๋ฐ–์œผ๋กœ ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ณ  ์–ด๋””์—์„œ๋‚˜ ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

"๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง"์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ์ด์•ผ๊ธฐ๋Š” ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค๋Š” ์ €์ž‘๊ถŒ์ด ์กด์ค‘๋˜๋Š” ์ƒํ™ฉ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ mbunit ๋ผ์ด์„ ์Šค ์กฐ๊ฑด์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ œ์•ˆํ•œ๋‹ค๋ฉด ๊ธฐ๋ณธ์—์„œ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

MbUnit์— ๋งŽ์€ ํŒจ์น˜๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๋ช‡ ๋…„ ๋™์•ˆ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ
๊ฒฐ์ฝ” ํ•ต์‹ฌ ๊ธฐ์—ฌ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‚ด ์ƒํƒœ๊ฐ€ ์ž˜๋ชป ํ‘œํ˜„๋˜๋Š” ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :)

๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง์˜ ๊ฒฝ์šฐ ์—ฌ๊ธฐ์—๋Š” ์‹ค์ œ๋กœ ์•„๋ฌด ์†Œ์šฉ์ด ์—†์Šต๋‹ˆ๋‹ค. NUnit ์ž‘๋™
MbUnit๊ณผ ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ ์ ˆํ•œ ์‹œ๊ฐ„์— ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃฐ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๊ฐ€ ๋ณ€๊ฒฝ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ ์ค‘ํ•˜๊ฒŒ ์ ‘๊ทผํ•˜์‹ญ์‹œ์˜ค.
์šฐ๋ฆฌ๊ฐ€ ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐฉ๋ฒ• ๋˜๋Š” ์ถฉ๋Œ.
2015๋…„ 4์›” 19์ผ ์˜ค์ „ 2์‹œ 45๋ถ„์— "CharliePoole" [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์กฐ๊ธˆ ์ง€๋ฃจํ•ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ ์€ ์ด๋ฏธ ์–ธ๊ธ‰ํ–ˆ์ง€๋งŒ
๋ถ„๋ช…ํžˆ ๋†“์นœ...

1.

๋‹น์‹ ์ด ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ๊ณ„ํš์ด ์žˆ์Šต๋‹ˆ๋‹ค.
2.

ํŠน์ • ์‹œ์ ์— ์ผ์ •์„ ์žก๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์‚ผ.

์˜ˆ์ •๋œ ์‹œ๊ฐ„์€ ์ฃผ๋กœ ์šฐ๋ฆฌ์˜ ํ‰๊ฐ€์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ๊ธฐ๋Šฅ๊ณผ ๋น„๊ตํ•˜์—ฌ ๊ธฐ๋Šฅ์˜ ๊ฐ€์น˜.
4.

NUnit ํŒ€์—๋Š” ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠน์ง•.
5.

๊ทธ๋“ค์€ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ๊ทธ๊ฒƒ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์–ด๋””์—์„œ๋‚˜ ๋ณต์‚ฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

"๋ฆฌ๋ฒ„์Šค ์—”์ง€๋‹ˆ์–ด๋ง"์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ์ด์•ผ๊ธฐ๋Š” ๋งค์šฐ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ ์†Œ์Šค๋Š”
์ €์ž‘๊ถŒ์ด ์กด์ค‘๋˜๋Š” ์ƒํ™ฉ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋งŒ์•ฝ ๋‹น์‹ ์ด
์šฐ๋ฆฌ๊ฐ€ mbunit ๋ผ์ด์„ ์Šค ์กฐ๊ฑด์„ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Œ์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค.
๋ฒ ์ด์Šค.

โ€”
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ฑฐ๋‚˜ GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/nunit/nunit/issues/164#issuecomment -94244650.

๋‚˜๋ณด๋‹ค ํ›จ์”ฌ ์žฌ์น˜์žˆ๋Š” ๋Œ“๊ธ€!

๋ณ‘๋ ฌ ์‹คํ–‰์˜ ์„ธ๊ณ„์—์„œ ์šฐ๋ฆฌ์˜ ํ˜„์žฌ ์šฐ์„  ์ˆœ์œ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋ณ‘๋ ฌ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰
  2. ์ œ์™ธ ๊ทธ๋ฃน
  3. ๋ณ‘๋ ฌ ๋ฐฉ๋ฒ•(ํ•˜๋‚˜์˜ ๊ณ ์ • ์žฅ์น˜์—์„œ) ์‹คํ–‰.

์ด๊ฒƒ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ฐ€์žฅ ์œ ์šฉํ•œ ์ˆœ์„œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฌด์–ธ๊ฐ€๋ฅผ 3.0 ์ดํ›„๋กœ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด 3.0์˜ ์ผ๋ถ€๋กœ ๋งŒ๋“ค ๋•Œ๋ณด๋‹ค ๋‚˜์ค‘์— ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋œ๋‹ค๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ˆ๋ผ๋Š” ์ ๋„ ์–ธ๊ธ‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์˜คํžˆ๋ ค 3.0์ด ๋” ๋น ๋ฅธ ์‹œ์ ์— ์˜จ๋‹ค๋Š” ์˜๋ฏธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์„ค์ • ๋ฐ ํ•ด์ œ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‰ฌ์šด ์˜ต์…˜์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๊ฒฝํ•ฉ์ด ์—†๋„๋ก ๊ฐ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ์–ด๋Š ์‹œ์ ์—์„œ ์˜ต์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•˜์ง€๋งŒ ์‹คํ–‰ ์˜ต์…˜์ธ์ง€ ๊ณ ์ • ์žฅ์น˜๋ณ„(์†์„ฑ) ์˜ต์…˜์ธ์ง€ ๋˜๋Š” ๋‘˜ ๋‹ค์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”!
NUnit์˜ ๋‹ค์Œ ๋ฒ„์ „์— ์ด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. NUnit์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ์œ ์ผํ•œ ์š”์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹3.4์— ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

@julianhaslinger NUnit 3.4๋Š”

์ฐธ๊ณ ๋กœ, ์ด ๋ฌธ์ œ๋Š” 3.4๊ฐ€ ์•„๋‹Œ ๋ฐฑ๋กœ๊ทธ ์ด์ •ํ‘œ(๋˜๋Š” ์œ ์‚ฌ ์ด์ •ํ‘œ)์— ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์šฐ๋ฆฌ๋Š” ๋ฏธ๋ฆฌ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง„ ๊ฐ ์ด์ •ํ‘œ์— ์†Œ์ˆ˜์˜ ํ•ต์‹ฌ ์ •์˜ ๋ฌธ์ œ๋งŒ ์ถ”๊ฐ€ํ•˜๋Š” ๊ด€ํ–‰์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ์ด์ •ํ‘œ์ธ 3.6์€ 3๊ฐœ์›” ํ›„์— ๋” ๋–จ์–ด์งˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. :-( ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์ œ๊ฐ€ ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜๋Š” ๊ฒƒ์„ ๋ณธ๋‹ค๋ฉด MyGet ํ”ผ๋“œ์—์„œ ๋” ์ผ์ฐ ๋“œ๋กญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@julianhaslinger ์ด๊ฒƒ์€ 3.4์— ํฌํ•จ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ฉฐ ์ด๋Š” ์•„๋งˆ๋„ ์ผ์ฃผ์ผ ์ •๋„ ํ›„์— ๋‚˜์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ œ์ณ๋‘๊ณ , ๋ณ‘๋ ฌ ๋ฉ”์„œ๋“œ ์‹คํ–‰์„ ์ง€์›ํ•˜๋Š” ์–ด๋–ค ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? XUnit์€ ํด๋ž˜์Šค ์ˆ˜์ค€๊นŒ์ง€ ๋ณ‘๋ ฌ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜๋งŒ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ํ‹€๋ ธ์–ด? ์ €๋Š” XUnit์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค :์Šค๋งˆ์ผ:

@CharliePoole ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ข‹์•„, ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์•ฝ๊ฐ„ ๋‚™๋‹ดํ•˜๊ฒŒ ๋“ค๋ฆฐ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค(๋˜๋Š” ์ด์ „ ์ถœ์‹œ)๋ฅผ ๊ธฐ๋‹ค๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์—ฌ์ „ํžˆ) ๋‹ค์Œ ๋ฒ„์ „(3.6)์—์„œ ์ด ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

@rprouse ์ €๋Š” ์ง€๊ธˆ MbUnit/Gallio๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฑฐ์˜ ์ข…๋ฃŒ๋˜์—ˆ๊ณ  ์ด์ œ NUnit์œผ๋กœ ์ „ํ™˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@julianhaslinger ๋Ÿฌ๋‹ํƒ€์ž„์˜ ๋ฌธ์ œ์ธ๊ฐ€์š”? ํ”ฝ์Šค์ฒ˜ ๋‚ด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๋ถ„ํฌ์— ๋Œ€ํ•œ ์ˆ˜์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด ๊ธฐ๋Šฅ์ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณ‘๋ ฌ ๊ณ ์ • ์žฅ์น˜์—์„œ ์–ป๋Š” ๊ฒƒ ์™ธ์—๋Š” ๊ฑฐ์˜ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์งˆ๋ฌธํ•ฉ๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ๊ฒฝ์šฐ ์ƒ๋Œ€์  ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@CharliePoole ์ •ํ™•ํžˆ, ์šฐ๋ฆฌ์˜ ์‹ค์ œ ๋ฌธ์ œ๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์‹คํ–‰ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ž๋™ํ™”/ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Selenium/WebDriver ํฌํ•จ)์— NUnit์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์—๋Š” 200๊ฐœ ์ด์ƒ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ NUnit์œผ๋กœ ์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ํž˜๋“  ์ผ์ž…๋‹ˆ๋‹ค.

๋น„๊ต(ํšŒ๊ท€ ํ…Œ์ŠคํŠธ์˜ ๋” ์ž‘์€ ํ…Œ์ŠคํŠธ ์„ธํŠธ ๋‚ด)๋Š” ๊ฐ€๋Šฅํ•œ NUnit ์†”๋ฃจ์…˜์ด ์•ฝ 1.5์‹œ๊ฐ„ ๋‚ด์— ์‹คํ–‰๋˜๋Š” ๋ฐ˜๋ฉด ํ˜„์žฌ MBunit ์†”๋ฃจ์…˜์€ 0.5์‹œ๊ฐ„(๋™์ผํ•œ ํ…Œ์ŠคํŠธ ์„ธํŠธ)์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ @CharliePoole , ๋” ํฐ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋ฅผ ๋” ์ž‘์€ ํด๋ž˜์Šค๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ณ  ์žˆ์ง€๋งŒ, ์ด๋Š” ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ์˜ ์ดˆ๊ธฐ ์•„์ด๋””์–ด๋ฅผ ์–ด๋–ป๊ฒŒ๋“  ํ›ผ์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@julianhaslinger - ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์‹คํ–‰ ์‹œ๊ฐ„์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ข…์†๋˜์ง€ ์•Š๊ณ  CPU์— ์ข…์†๋œ๋‹ค๋Š” ๊ฒƒ์ด ํ™•์‹คํ•ฉ๋‹ˆ๊นŒ?

NUnit 3๋กœ ์ฒ˜์Œ ์ „ํ™˜์„ ์‹œ๋„ํ–ˆ์„ ๋•Œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰ ์‹œ๊ฐ„์ด ์ƒ๋‹นํžˆ ๊ธธ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ NUnit์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ตœ๋Œ€ํ™”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ…Œ์ŠคํŠธ ์‹คํ–‰์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ๊ฐœ์ฒด๋ฅผ ์œ ์ง€ํ•˜๋Š” ํ˜„์žฌ ๋ฒ„์ „์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๋‚ด๋ถ€์ ์œผ๋กœ ํŒจ์น˜๋œ ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 3.4์— ๋Œ€ํ•œ PR์„ ๋ฐ›๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์ด ์‹œ์ ์—์„œ ์‹œ๊ฐ„์ด ์žˆ์„์ง€ ํ™•์‹ ์ด ์„œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. :-(

์ด๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋ฉด ์‚ฌ๊ณผํ•˜์ง€๋งŒ Selenium์ด ๋ฉ”๋ชจ๋ฆฌ์˜ ๊ณต์ •ํ•œ ๊ณต์œ ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์–ธ๊ธ‰ํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. :-)

@ChrisMaddock ์ž…๋ ฅ

@ChrisMaddock 3.4์—์„œ ๋ฉ”๋ชจ๋ฆฌ ์ˆ˜์ •์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. PR์„ ์˜ฌ๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด ์•„์ง ์ œ์ž‘ ์ค€๋น„๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์ •๋ฆฌ๋ฅผ ๋„์™€๋“œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :+1:

@rprouse - PR #1367์˜ ์ด ์ดˆ๊ธฐ ์ปค๋ฐ‹ https://github.com/nunit/nunit/pull/1367/commits/5f98ae51025f7af8244abd4367d1f47260874dfc ๋Š” ํŒจ์น˜๋œ v3.0.1์—์„œ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•ด ์ ์ ˆํ•˜๊ฒŒ ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.

PR์—์„œ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์ „์— OneTimeTearDown ๋กœ ์ด๋™ํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด๋™์œผ๋กœ ์ธํ•ด v3.2.1์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ๋˜๋Š” ๋‹ค์‹œ ๋„์ž…๋œ ๋‹ค๋ฅธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ณด์กด - ์ด์‚ฌ ํ›„ ์žฌ๊ฒ€์‚ฌ๋ฅผ ํ•˜์ง€ ์•Š์•˜์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ๋‹ค์‹œ ํ…Œ์ŠคํŠธํ•˜๊ณ  ๋‚ด์ผ ๊ทธ๊ฒƒ์„ ๋˜์งˆ ๊ฒƒ์ด๊ณ , ์šฐ๋ฆฌ๊ฐ€ ํ•ต์‹ฌ ๋ฆด๋ฆฌ์Šค๋กœ ๋Œ์•„๊ฐ€๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :-)

@ChrisMaddock ํšŒ๊ท€ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ค‘์— ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์‚ดํŽด๋ณด๊ณ  ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹คํ–‰์ด ๋ฉ”๋ชจ๋ฆฌ์— ์ œํ•œ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ๊ฐ ํด๋ž˜์Šค ๋‚ด์—์„œ ๊ฐœ๋ณ„ ๋ฉ”์„œ๋“œ์˜ ๋ณ‘๋ ฌ ์‹คํ–‰์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” NUnit ๋ฒ„์ „์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@julianhaslinger๊ฐ€ ๋งํ•œ ๊ฒƒ์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด Selenium ํ…Œ์ŠคํŠธ์™€ ํ•จ๊ป˜ NUnit์„ ์‚ฌ์šฉํ•  ๋•Œ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๋ณ‘๋ ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ „๋‹ฌ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ ์Šคํฌ๋žฉํ•œ ๋‹จ์ผ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด nunit-console.exe์˜ ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ๋ž˜ํผ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ผ .xml ์ถœ๋ ฅ์ด ์•„๋‹Œ ๋งŽ์€ .xml ์ถœ๋ ฅ ํŒŒ์ผ(๊ฐ ํ…Œ์ŠคํŠธ ์‹คํ–‰์— ๋Œ€ํ•ด ํ•˜๋‚˜์”ฉ)์ด ์ƒ์„ฑ๋˜๊ณ  _OneTimeSetUp_ ๋ฐ ํ•ด์ œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  ๋Œ€์‹  ์™ธ๋ถ€ ์„ธ๋งˆํฌ์–ด์— ์˜์กดํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ƒ์ ์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ ค๋Š” ์‹คํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹ํ™˜๊ฒฝ ๋ณ€์ˆ˜. ๋‚˜๋Š” ์˜ค๋žซ๋™์•ˆ NUnit์—์„œ ๋ณ‘๋ ฌ ์‹คํ–‰์„ ํ•œ๋‹ค๋Š” ์•ฝ์†์„ ๋”ฐ๋ž๊ณ  3.0์—์„œ ์ด ๊ธฐ๋Šฅ์ด ์–ด๋–ป๊ฒŒ ์ถœ์‹œ๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•ด ๋งค์šฐ ์‹ค๋งํ–ˆ์Šต๋‹ˆ๋‹ค(๋ถ€๋ถ„์ ์œผ๋กœ๋งŒ ์ง€์›๋˜๋ฉฐ ๋ฌธ์ œ ๋ฐ ๋ฆด๋ฆฌ์Šค ์ •๋ณด์— ๋Œ€ํ•œ ์‹ค์งˆ์ ์ธ ํŒŒ๊ณ ๊ฐ€ ํ•„์š”ํ•จ). ๋ชจ๋“  ๊ฒƒ์ด ์‹ค์ œ๋กœ ์ง€์›๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜์„ ๋ฐœ๊ฒฌ). ๋‚˜๋Š” ์ด๊ฒƒ์„ ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์„ ์กฐ์‚ฌํ•˜๊ธฐ๊นŒ์ง€ํ–ˆ์ง€๋งŒ ๋ถˆํ–‰ํžˆ๋„ NUnit์˜ ๋””์ž์ธ์ด ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ• ์ˆ˜์ค€์—์„œ ๋ณ‘๋ ฌ ์‹คํ–‰ ๊ตฌํ˜„์— ๋ฐ˜๋Œ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ์ „ํžˆ ์ผํšŒ์„ฑ ์„ค์ • ๋ฐ ๋ถ„ํ•ด ์œ ํ˜• ๋ฐฉ๋ฒ•์„ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•จ) ์ด๋ฏธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฏ€๋กœ ์ด ๊ธฐ๋Šฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ์‹œ๊ฐ„์„ ์ •๋‹นํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. GitHub์—์„œ ํŒ€๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ๋ณ‘๋ ฌ ์‹คํ–‰์„ ๊ตฌํ˜„ํ•˜๋„๋ก ์ง€์›). ์–ด์จŒ๋“ ... ์–ด์ง€๋Ÿฝ๊ฒŒ ํ•ด์„œ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค... C# ์ฝ”๋“œ์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•œ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋ฉ”์„œ๋“œ ์ˆ˜์ค€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ๊ทธ๋‹ค์ง€ ์˜์กดํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜์ง€๋งŒ Selenium ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ์— NUnit์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์•Œ์•„๋‘์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ์€ ์—„์ฒญ๋‚œ ๊ฐœ์„ ์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! :์›ƒ๋‹ค:

๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ข€ ํ—ค๋งค๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์•„์š”...

์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌด์—‡์ด ํ•„์š”ํ•œ์ง€, ์™œ ํ•„์š”ํ•œ์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ์›น ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ Selenium ์‚ฌ์šฉ์ž์˜ ๋ง์„ ๊ฒฝ์ฒญํ•˜๊ณ  ๊ทธ๋“ค์ด ์›ํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์‚ฌ์ด์— ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ณ‘๋ ฌ ๊ณ ์ • ์žฅ์น˜์ธ ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค๋ฅธ ๊ฒƒ์„ ์›ํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜์ง€๋งŒ ๋‘ ๊ทธ๋ฃน์ด "Selenium ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”๋กœํ•˜๋Š” ๊ฒƒ"์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•ฝ๊ฐ„ ํ˜ผ๋ž€ ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ˆœ์„œ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ์‚ฌ๋žŒ๋“ค๊ณผ ๋‹ฌ๋ฆฌ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์›น ํ…Œ์ŠคํŠธ๊ฐ€ ๋ฉ”์„œ๋“œ ์ˆ˜์ค€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์›ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ถ”์ธกํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฐ›๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จํ•˜์—ฌ... ๋ณ„๋„์˜ ํ…Œ์ŠคํŠธ ์–ด์…ˆ๋ธ”๋ฆฌ ์‚ฌ์šฉ์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๊นŒ? NUnit์€ ๊ฐœ๋ณ„ ํ”„๋กœ์„ธ์Šค์—์„œ ๊ฐ๊ฐ์„ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๊ฒƒ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋™๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์Šค๋ ˆ๋“œ ์•ˆ์ „๊ณผ ๊ด€๋ จํ•˜์—ฌ - ์šฐ๋ฆฌ๋Š” ๋ณ‘๋ ฌ ๊ตฌํ˜„์ด ์Šค๋ ˆ๋“œ ์•ˆ์ „์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์ง€๋„๋ก ๊ณ„ํšํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ณด์ฆ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์—ˆ๋‹ค์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๋‹น์‹ ์˜ ๋ฐฉ๋ฒ•์€ ์ด๋ฏธ ์Šค๋ ˆ๋“œ ์•ˆ์ „ํ•œ์ง€ NUnit๊ณผ ์–ด๋–ค ์Šค๋ ˆ๋“œ ์•ˆ์ „ ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ทธ ์ž์ฒด๋กœ ์‚ฌ์†Œํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

์‘๋‹ตํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์— ๋Œ€ํ•œ ๊ท€ํ•˜์˜ ์˜๊ฒฌ์„ ์™„์ „ํžˆ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค.
ํ”ฝ์Šค์ฒ˜์—์„œ ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์ˆœ์„œ ์ง€์ • ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ถ„ํ• 
์–ด์…ˆ๋ธ”๋ฆฌ.

์ €๋Š” ์ด๋ฏธ NUnit ์‚ฌ์šฉ์ž์ด๋ฉฐ ๋ช‡ ๋…„ ๋™์•ˆ(๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ „์—๋Š” JUnit๋„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค)
๊ทธ๋ž˜์„œ ํ”ฝ์Šค์ฒ˜์—์„œ ํ…Œ์ŠคํŠธ ์ˆœ์„œ์— ์˜์กดํ•œ๋‹ค๋Š” ์•„์ด๋””์–ด๋Š” ์‹ฌ์ง€์–ด
๋‚ด ํ…Œ์ŠคํŠธ ๋””์ž์ธ์—์„œ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค. ๊ฐ ํ…Œ์ŠคํŠธ๋Š” ์™„์ „ํžˆ ์บก์Šํ™”๋ฉ๋‹ˆ๋‹ค.
์ˆœ์„œ์— ๋Œ€ํ•œ ๊ธฐ๋Œ€ ์—†์ด ์‚ฌ์ดํŠธ ๋‚ด์—์„œ ์ž‘์—… ๋˜๋Š” ์ผ๋ จ์˜ ์ž‘์—…
์‹คํ–‰. ๋‚ด๊ฐ€ ํ…Œ์ŠคํŠธํ•˜๋Š” ์‚ฌ์ดํŠธ์˜ ๋””์ž์ธ์€ ๋˜ํ•œ ๋งŽ์€ ํ…Œ์ŠคํŠธ๊ฐ€
์‹คํ–‰ํ•˜๋Š” ๋ฐ ์ตœ๋Œ€ 20๋ถ„์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ด ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์€
์‚ฌ์ดํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ผ) ๋ฐ ํ…Œ์ŠคํŠธ ์œ ํ˜•์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
์ฝ”๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๊ฐ€ ํ™œ์šฉ๋˜๋„๋ก ์—ฌ๋Ÿฌ ์œ ์‚ฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค
๊ณตํ†ต ๊ธฐ๋ณธ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณต์ œ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ ์šฉ์ด์„ฑ ํ–ฅ์ƒ
ํ–‰๋™ ์–‘์‹. ํ…Œ์ŠคํŠธ๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณ„๋„์˜ ํ”„๋กœ์ ํŠธ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น ์˜์—ญ์˜ ํŒ€ ์†Œ์œ ๊ถŒ(๋”ฐ๋ผ์„œ ๋ณ„๋„์˜ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ
์–ด์…ˆ๋ธ”๋ฆฌ๋‹น ๋งŽ์€ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋‚ด ํ…Œ์ŠคํŠธ ๋ž˜ํผ๊ฐ€
์ด์ „์— ์ƒ์„ฑ๋œ ๋Œ€๋กœ ๋ณ‘๋ ฌ๋กœ ์–ด์…ˆ๋ธ”๋ฆฌ์—์„œ ํ†ต๊ณผ๋œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ
NUnit 3์˜ ์ฒซ ๋ฒˆ์งธ ๊ณต์‹ ๋ฆด๋ฆฌ์Šค์ด๋ฉฐ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€
์ถฉ๋ถ„ํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ๋™์‹œ์— ์‹คํ–‰๋  ๊ฐ€๋Šฅ์„ฑ
์‚ฌ์šฉ ๊ฐ€๋Šฅ).

๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์–ด์…ˆ๋ธ”๋ฆฌ์— 10๊ฐœ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๊ณ 
๋˜ ๋‹ค๋ฅธ 100๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ 10๊ฐœ๊ฐ€ ์žˆ๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์—๋Š” 10๋ถ„์ด ์†Œ์š”๋˜๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ฐ๊ฐ 100๊ฐœ๊ฐ€ ํฌํ•จ๋œ ์–ด์…ˆ๋ธ”๋ฆฌ์—๋Š” ๊ฐ๊ฐ 1๋ถ„์ด ์†Œ์š”๋˜๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‚ด๊ฐ€
110๊ฐœ์˜ ๋ณ‘๋ ฌ ์Šค๋ ˆ๋“œ(์‹ค์ œ๋กœ๋Š”
์ธํ”„๋ผ ์„ค๊ณ„์˜ ์ผ๋ถ€) ๊ทธ๋Ÿฌ๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.
100๋ถ„์ด ์•„๋‹ˆ๋ผ 10๋ถ„ ์•ˆ์—.

์ด๊ฒƒ์ด ์„ค๋ช…์— ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค... ์ƒํ™ฉ์ด ์—ฌ์ „ํžˆ ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ „๋ฐ˜์ ์ธ ์š”์ ์€ ๋ฉ”์„œ๋“œ ์ˆ˜์ค€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€
๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์˜ˆ: ruby์˜ prspec)์—์„œ ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ
๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ ๊ฐ€์งˆ ์„ฑ๋Šฅ ๊ฐœ์„ ์˜ ๋ถ„์„์„ ์ˆ˜ํ–‰
์ค‘์š”ํ•œ ๊ธ์ •์ ์ธ ๋ณ€ํ™”๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.
https://github.com/bicarbon8/rspec-parallel/wiki/Examples
2016๋…„ 7์›” 1์ผ 00์‹œ 45๋ถ„์— "CharliePoole" [email protected]์ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์˜๊ฒฌ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ข€ ํ—ค๋งค๊ฒŒ ๋  ๊ฒƒ ๊ฐ™์•„์š”...

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

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๊ณผ ๊ด€๋ จํ•˜์—ฌ ... ๋ณ„๋„์˜ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์„ ๊ณ ๋ ค ํ–ˆ์Šต๋‹ˆ๊นŒ?
์–ด์…ˆ๋ธ”๋ฆฌ? NUnit์€ ๊ฐ๊ฐ์„ ๋ณ„๋„์˜ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค.
ํ”„๋กœ์„ธ์Šค. ๋ฌผ๋ก  ์•ก์„ธ์Šค๋ฅผ ๋™๊ธฐํ™”ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
ํŒŒ์ผ ๊ฐ™์€ ๊ฒƒ๋“ค.

์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ ๊ด€๋ จ - ์šฐ๋ฆฌ๋Š” ๋ณ‘๋ ฌ ๊ตฌํ˜„์„ ๊ณ„ํšํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค.
์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ์ง‘๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ธฐ๋Œ€ํ–ˆ๋˜ ์œ ์ผํ•œ ๊ฒƒ์€
๋ณด์žฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ NUnit์ด ์Šค๋ ˆ๋“œ ์•ˆ์ „ ๋ฌธ์ œ๋ฅผ _์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋ฉ”์†Œ๋“œ๋Š” ์ด๋ฏธ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๊ทธ ์ž์ฒด๋กœ ์‚ฌ์†Œํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/nunit/nunit/issues/164#issuecomment -229819324 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe/ACNsyoczCUV9L7kbF2SHB7lLsyBKlrv9ks5qRFUJgaJpZM4CUZ8r
.

์ •๋ณด ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค... ๋‹ค์–‘ํ•œ ๊ด€์ ์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์„œ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋‚ด 5์„ผํŠธ.

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

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

์ž…๋ ฅํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค... ์ด ๋ถ€๋ถ„์€ ์ผ๋ถ€ ํ…Œ์ŠคํŠธ๊ฐ€ ์„œ๋กœ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒฝ์Ÿ์ ์ด์ง€๋งŒ ๋ณด์™„์ ์ธ ๋ฌธ์ œ์™€ ํ•จ๊ป˜ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—์„œ ๋‹ค๋ฃจ๊ฒŒ ๋  ์˜์—ญ์ž…๋‹ˆ๋‹ค!

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

@CharliePoole ์ข‹์€ ์†Œ์‹์ž…๋‹ˆ๋‹ค! ์ •๋ง ๊ณ ๋ง™์Šต๋‹ˆ๋‹ค!

๋‚ด ์ƒ๊ฐ์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๊ฒฉ๋ฆฌ๋˜์–ด์•ผ ํ•˜๊ณ  ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋‚˜ ์‹คํ–‰ ์ˆœ์„œ์— ์˜์กดํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์ด ์—ฌ์ „ํžˆ ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ์ผ๋ถ€ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ [Parallelizable(ParallelScope.None)] ๋ฐ/๋˜๋Š” OrderAttribute๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ตฌํ˜„ ์ค‘์ธ ์ด ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ๋กœ์ปฌ ์›น๋“œ๋ผ์ด๋ฒ„ ๊ทธ๋ฆฌ๋“œ ๋˜๋Š” BrowserStack ๋˜๋Š” SauceLabs์™€ ๊ฐ™์€ Saas ๊ณต๊ธ‰์ž์— ๋น„ํ•ด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ฅผ ๋” ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ €๋Š” ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์˜ ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ์˜ ์–‘์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์›น ๋“œ๋ผ์ด๋ฒ„ ๋…ธ๋“œ ๋˜๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์˜ ์ˆ˜๋กœ ์ œํ•œํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋ฏ€๋กœ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์™„์ „ํžˆ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ํ…Œ์ŠคํŠธ์— 8๊ฐœ์˜ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๊ณ  ๋‚ด ๊ทธ๋ฆฌ๋“œ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ 8๊ฐœ์˜ ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

์›น ์‚ฌ์ดํŠธ์˜ ๊ฒฝ์šฐ ๊ฑฐ์˜ ํ•ญ์ƒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค . ๋” ๋†’์€ ์ˆ˜์ค€์˜ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ์—๋Š” ์ข…์ข… ์‹œํ€€์‹ฑ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์˜ ์ผ๋ จ์˜ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์ผ๋ จ์˜ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์ด๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ํŽธ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ, ์šฐ๋ฆฌ๋Š” ์•„๋งˆ๋„ [StepFixture] ํด๋ž˜์Šค ์•ˆ์— ์žˆ๋Š” [Step]์ด๋ผ๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์ด์™€ ์œ ์‚ฌํ•œ ์ด๋ฆ„์ด ํ•„์š”ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์•ผ ์ด ๋ชจ๋“  ์ˆœ์„œ/์‹œํ€€์‹ฑ ํ•ญ๋ชฉ์„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์›น์ด ์ฃฝ๊ธฐ ์ „์— ๊ทธ๋ ‡๊ฒŒ ํ•  ์‹œ๊ฐ„์ด ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :-)

์–ด์จŒ๋“  ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹ค์ œ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์€ ํ•ญ์ƒ ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

@CharliePoole , ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์งˆ๋ฌธํ•˜์—ฌ ์ €๋ฅผ ์˜คํ•ดํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์ด ๊ธฐ๋Šฅ์ด ๋‹ค์Œ ๋ฒ„์ „(3.5, 2016๋…„ 9์›” 29์ผ๊นŒ์ง€)์— ์ถ”๊ฐ€๋˜๋‚˜์š”?

๋‚ด๊ฐ€ ๋ฏธ๋ž˜๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ฒ™ ํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๊ทธ๊ฒƒ์€ 9์›”๊นŒ์ง€๋งŒ ๋‹น์‹ ์„ ๋งŒ์กฑ์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค. :-)

๊ธฐ๋Šฅ์„ "์˜ˆ์•ฝ"ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜์—ฌ ๋‹ต๋ณ€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ๋ถ„๊ธฐ์— ํ•œ ๋ฒˆ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋‚˜์˜ค๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์„ (์—ฐ์ดˆ๋ถ€ํ„ฐ) ์‹œ๋„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ถœ์‹œ๋ฅผ ๋” ์ž˜ํ•˜๊ฒŒ ๋˜๋ฉด ์†๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์ง€์†์ ์œผ๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์› ๋ด‰์‚ฌ ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ์—์„œ ๋งค์›” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์ •๋œ ์–‘์˜ ๋…ธ๋ ฅ์€ ์—†์Šต๋‹ˆ๋‹ค. "์–ด์ œ ๋‚ ์”จ" ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์ด NUnit์— ์†Œ๋น„ํ•ด์•ผ ํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ์ž์› ๋ด‰์‚ฌ ์ธ์› ์ˆ˜๋Š” ๋งค์šฐ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค.

ํƒ€ํ˜‘์œผ๋กœ ์šฐ๋ฆฌ๋Š” ๋ฆด๋ฆฌ์Šค์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ์†Œ์ˆ˜์˜ ๋ฌธ์ œ๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ด์ •ํ‘œ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ์€ ์™„๋ฃŒ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๊ฒƒ์˜ ์•ฝ 25% ์ด์ƒ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค์˜ ๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์ œ๋Š” ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„ ๋˜๋Š” ๊ธฐ๊ปํ•ด์•ผ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ž‘์—…์— ์ „๋…ํ•  ๋•Œ๋งŒ ํ•ด๋‹น ์ด์ •ํ‘œ์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 3.5 ๋งˆ์ผ์Šคํ†ค์—์„œ ๋ฏธํ•ด๊ฒฐ ๋ฌธ์ œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌด์–ธ๊ฐ€ ๋‹ค๋ฅธ ์ž‘์—…์„ ๋ฐฉํ•ดํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ๊ฒฝ์šฐ ๊ฐ€๋” ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋Š” ์ผ์˜ ๊ธ์ •์ ์ธ ์ธก๋ฉด์€ ๋ฆด๋ฆฌ์Šค๊ฐ€ ์ œ์‹œ๊ฐ„์— ๋‚˜์˜ฌ ๊ฒƒ์ด๋ผ๊ณ  ์‚ฌ์‹ค์ƒ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ถ€์ •์ ์ธ ์ธก๋ฉด์€ ๊ทธ ์•ˆ์— ๋ฌด์—‡์ด ๋“ค์–ด ์žˆ๋Š”์ง€ ๋งํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. :-(

์ด ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•ด... ์ €๋Š” ์šฐ๋ฆฌ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ด๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๋Š” ์ž์œ ๋กญ๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ด ๋ฒ”์œ„์™€ ์–ด๋ ค์›€์˜ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ๋ฐฐ๊ฒฝ โ€‹โ€‹์ง€์‹์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ ๋ฐฐ๊ฒฝ์„ ๊ฐ€์ง„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์•ž์œผ๋กœ ๋ช‡ ์ฃผ ์•ˆ์— ์ด๊ฒƒ์„ ์„ ํƒํ•œ๋‹ค๋ฉด, ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋ฆด๋ฆฌ์Šค๊นŒ์ง€ ์™„๋ฃŒ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ถ”์ธกํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ €๋Š” ๋‹ค๋ฅธ ์ผ์„ ํ•˜๋ฉด์„œ ์ด ์ผ์„ ํ•˜๋Š” ๋ฐ ํ•œ ๋‹ฌ ์ •๋„ ๊ฑธ๋ฆด ๊ฒƒ ๊ฐ™์•„์š”.

์ฃ„์†กํ•˜์ง€๋งŒ ๋” ์ด์ƒ ํ™•์‹คํ•œ ๋‹ต๋ณ€์€ ์—†์ง€๋งŒ ๊ทธ๋Ÿฌํ•œ ๋‹ต๋ณ€์€ ๋ฐ˜๋“œ์‹œ ๊ฑฐ์ง“๋ง์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค!

@CharliePoole ์ด ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@tomersss ์šฐ๋ฆฌ๋Š” ์•„์ง ์ด๊ฒƒ์— ๋Œ€ํ•œ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ 3.5๊ฐ€ ๋ช‡ ์ฃผ ์•ˆ์— ๋‚˜์˜ค๊ธฐ๋ฅผ ํฌ๋งํ•˜๋ฏ€๋กœ ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์—๋Š” ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์ด ๊ณง ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์‹ถ์ง€๋งŒ ์ด๋ฒˆ ์ฃผ์— ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์™€ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š๋ผ ๊ฝค ๋ฐ”๋นด์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ ˆ์ด๋”์— ์žˆ์Šต๋‹ˆ๋‹ค.

@CharliePoole ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

@KPKA ์•„์ง ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์—…๋ฐ์ดํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ZenHub๊ฐ€ ์„ค์น˜๋œ ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ์ด ๋ฌธ์ œ๊ฐ€ ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ Backlog์—์„œ ToDo๋กœ ์ด๋™ํ•œ ๋‹ค์Œ In Progress๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Zenhub๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ์— ํ• ๋‹น๋œ ์‚ฌ๋žŒ์„ ๋ณด๋ฉด ๋ˆ„๊ฐ€ ๊ทธ๊ฒƒ์„ ์„ ํƒํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@CharliePoole @rprouse

์•ˆ๋…•ํ•˜์„ธ์š”!

์ด ๋ฌธ์ œ์— ๋”ฐ๋ฅธ ์†Œ์‹์ด ์žˆ์Šต๋‹ˆ๊นŒ?
๋‹ค์Œ ๋ฆด๋ฆฌ์Šค์— ํฌํ•จ๋  ๊ฒƒ์ธ์ง€ ์•„๋‹ˆ๋ฉด ๋‹ค๊ฐ€์˜ค๋Š” ์ด์ •ํ‘œ ์ค‘ ํ•˜๋‚˜์—์„œ ๊ณ„ํš๋  ๊ฒƒ์ธ์ง€?

ํ˜„์žฌ ์ด๊ฒƒ์ด NUnit์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉํ•ดํ•˜๋Š” ์œ ์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์˜ํ–ฅ์„ ๋ฐ›์•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๊นŒ์šด ์‹œ์ผ ๋‚ด์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ž์‹ ์„ ๊ณ ๋ฐฑํ•˜์—ฌ ์ด ์ผ์— ์ฐฉ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์นœ์ ˆํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณง ์†Œ์‹์„ ๋“ค์„ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

@GitSIPA ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์„ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ด๋–ค ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋‹ตํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ฌด๋„ ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ž‘์—…์„ ์‹œ์ž‘ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ETA๋Š” ์—†์ง€๋งŒ ๋‹ค์Œ์— ์ž‘์—…ํ•  ์ž‘์—…์„ ๊ฒฐ์ •ํ•  ๋•Œ ๊ท€ํ•˜์˜ ํˆฌํ‘œ๋ฅผ ๊ณ ๋ คํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1, @GitSIPA์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ •๋ง ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค

@GitSIPA +1
@rprouse ์šฐ๋ฆฌ๋Š” mbunit์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ง€๊ธˆ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. mbunit์— ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@rprouse ์ €ํฌ๋„ ํ˜„์žฌ MbUnit์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ƒˆ๋กœ์šด Visual Studio ๋ฒ„์ „์€ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— NUnit์œผ๋กœ์˜ ์ „ํ™˜์„ ๊ณ ๋ คํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ #1921์—์„œ @jnm2 ๋Š” "์šฐ๋ฆฌ์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ ์‚ฌ์ด์— ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ œ๊ฐ€ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"๋ผ๊ณ  ๋ฌผ์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ ์ฒซ ๋ฒˆ์งธ: ํ™•์‹คํžˆ! ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์˜ ๋„์›€์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์—:

  1. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ์ผ๋Œ€์ผ ํ…Œ์ŠคํŠธ๋ฅผ ๋งคํ•‘ํ•˜๋Š” "WorkItems"๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ • ์žฅ์น˜์— ๋Œ€ํ•œ OneTimeSetUp ๋ฐ OneTimeTearDown์„ ์˜ˆ๋น„ ๋‹จ๊ณ„๋กœ ๋ณ„๋„์˜ WorkItem์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ #1096์€ ์ด์— ๋Œ€ํ•ด ๋‹ค๋ฃน๋‹ˆ๋‹ค.

  2. WorkItem์ด ๋‹ค๋ฅธ WorkItem์— ์ข…์†๋˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ข…์†๋œ ํ•ญ๋ชฉ์ด ๋ชจ๋‘ ์™„๋ฃŒ๋  ๋•Œ๋งŒ ์‹คํ–‰๋˜๋„๋ก ์˜ˆ์•ฝ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ํ˜„์žฌ CountDown์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งค์šฐ ๋‹จ์ˆœํ•œ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ธ ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์˜ ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์€ OneTimeTearDown์ด ๋ชจ๋“  ํ…Œ์ŠคํŠธ์˜ ์™„๋ฃŒ์— ์˜์กดํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ํ…Œ์ŠคํŠธ ๊ฐ„์˜ ์ข…์†์„ฑ์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ณด๋ฅ˜ ์ค‘์ธ ์ž‘์—… ํ•ญ๋ชฉ์˜ ๋Œ€๊ธฐ์—ด๋กœ ์ƒ๊ฐํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ฃผ์š” ๋ฌธ์ œ ์ž์ฒด์— ๋Œ€ํ•œ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ณ ์ • ์žฅ์น˜์— ๋Œ€ํ•ด OneTimeSetUp์„ ์ˆ˜ํ–‰ํ•œ ๋™์ผํ•œ ์Šค๋ ˆ๋“œ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋Œ€์‹  ์‹คํ–‰ํ•˜๋„๋ก ํ…Œ์ŠคํŠธ๋ฅผ ์˜ˆ์•ฝํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด NUnit์ด ์‹ค์ œ๋กœ ์‹คํ–‰์„ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ์‚ฌํ•ญ์— ๋งค์šฐ ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๊บผ์ด ๋„์™€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ ์–ด๋–ค ๊ณ„ํš์ด ์žˆ์—ˆ๋‚˜์š”?
๋‚ด ์š”๊ตฌ ์‚ฌํ•ญ์€ CPU๋ฅผ ํฌํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ๋ณ‘๋ ฌ๋กœ ์ถฉ๋ถ„ํ•œ TestCaseSource ์ผ€์ด์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ค์ •, ๋ถ„ํ•ด ๋˜๋Š” ์ฃผ๋ฌธ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ๊ทธ๊ฒƒ๋“ค์„ ๊ณ ๋ คํ•ด์•ผ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

TestCaseSource ์‹คํ–‰์ด ๋ณ‘๋ ฌํ™”๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ TestCaseSources๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์ผํ•œ ๊ณ ์ • ์žฅ์น˜์˜ ๋‘ ๋ฉ”์„œ๋“œ๊ฐ€ ์—ด๊ฑฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋œ๋‹ค๋ฉด ๋‘ ๊ฐœ์˜ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋™์ผํ•œ TestCaseSource๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘: RACE CONDITION์— ๋Œ“๊ธ€์„ ๋‹ฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋ฏธ ์ข‹์€ ์ถœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค! ๐Ÿ˜†

๋‚ด๊ฐ€ ์ตœ๊ทผ์— ๋งŽ์ด ํ•ด์•ผ๋งŒ ํ–ˆ๋˜ ์ด์•ผ๊ธฐ๋ฅผ ๋ฐ˜๋ณตํ•  ๊ฒƒ์ด๋‹ค. :์›ƒ๋‹ค:

NUnit์€ ๋จผ์ € ํ…Œ์ŠคํŠธ(๋ฐœ๊ฒฌ, ํƒ์ƒ‰)๋ฅผ ๋กœ๋“œํ•œ ๋‹ค์Œ ๋Ÿฌ๋„ˆ ์œ ํ˜•์— ๋”ฐ๋ผ ํ…Œ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

TestCaseSource๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋กœ๋“œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ํ…Œ์ŠคํŠธ์™€ ๋™์ผํ•œ ํด๋ž˜์Šค์— ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ…Œ์ŠคํŠธ์˜ ์ผ๋ถ€๋กœ ๊ฐ„์ฃผํ•˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

IOW, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์†Œ์Šค๋ฅผ "์‚ฌ์šฉ"ํ•˜์ง€ ์•Š๊ณ  NUnit์ด ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ƒ์„ฑ๋  ๋•Œ๊นŒ์ง€๋Š” ์•„๋ฌด ๊ฒƒ๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ง์ด ๋ฉ๋‹ˆ๊นŒ?

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

๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ณ‘๋ ฌ๋กœ __running__ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ถ€๋ฅผ ๋ณ‘๋ ฌํ™”ํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์œผ๋กœ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š” ํ•œ ๊ณ ์ • ์žฅ์น˜ ์•„๋ž˜์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋˜์ง€ ์•Š์€ ํ…Œ์ŠคํŠธ์™€ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ํ…Œ์ŠคํŠธ์˜ ๊ฐœ๋ณ„ ์‚ฌ๋ก€๋Š” ์—ฌ๊ธฐ์—์„œ ๋™๋“ฑํ•˜๊ฒŒ ์ทจ๊ธ‰๋ฉ๋‹ˆ๋‹ค.

OneTimeTearDown์ด ์—†๋Š” ์„ค๋น„์—์„œ ํ…Œ์ŠคํŠธ์˜ ๋ณ‘๋ ฌํ™”๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์€ ํฅ๋ฏธ๋กœ์šด ์‹คํ—˜์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค(OneTimeSetUp์ด ๊ดœ์ฐฎ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค). ๊ทธ ๊ฒฐ์ •์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค๋ฉด ์‰ฝ๊ฒŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ OneTimeTearDown์€ ์ƒ์†๋œ ๋ฉ”์„œ๋“œ์™€ ์ „์—ญ ActionAttributes๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ์ •์ด ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

@jnm2 ์ด๋ฏธ ์ด ํŠน์ • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ธฐํšŒ๊ฐ€

@julianhaslinger ์•„๋‹ˆ์š”. 1885๋…„๊ณผ 1933๋…„์˜ ๋‘ ๊ฐ€์ง€ ์ฆ‰๊ฐ์ ์ธ ๋ฌธ์ œ ์ดํ›„์— ๋‚ด ๋ชฉ๋ก์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋”์šฑ ์ข‹์Šต๋‹ˆ๋‹ค!

@julianhaslinger ์„œ๋กœ์— ๋Œ€ํ•ด ์ž˜ ๊ฐ๋‹น ํ•˜๊ธฐ ํž˜๋“  ์ผ์ด๋ผ๊ณ  ๋ง์”€ https://github.com/nunit/nunit/issues/164#issuecomment -265267804์—์„œ ๋‚ด ์˜๊ฒฌ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค. ๋” ๊ฐ„๋‹จํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ƒ๊ฐ๋‚˜๋ฉด ์ฝ”๋”ฉํ•˜๊ธฐ ์ „์— ์ด์— ๋Œ€ํ•ด ๊ฒŒ์‹œํ•˜๋ฉด ๋ฏธ๋ž˜ ์˜ˆ์ธก๊ณผ ๊ด€๋ จ๋œ ๋ช…๋ฐฑํ•œ YAGNI์™€ ๋ฏธ๋ž˜ ๊ณ ๋ ค ์‚ฌํ•ญ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@CharliePoole @jnm2 ์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„!

์ด ๋ˆ„๋ฝ๋œ ๊ธฐ๋Šฅ์˜ ๊ตฌํ˜„์„ ์‹œ์ž‘ํ•˜๋ ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋‹จ์ง€ ์ง„ํ–‰ ์ƒํ™ฉ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๋‹ต๋ณ€(์œ„)์—์„œ ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด ํŠน์ • ๊ธฐ๋Šฅ ์š”์ฒญ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ง„ํ–‰(?)์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

@CharliePoole ์ฝ”๋“œ๋ฅผ ์กฐ์‚ฌํ•˜๋Š” ๋™์•ˆ ๋™์ผํ•œ Fixture ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, WorkItem์ด ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์˜ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์ธ์Šคํ„ด์Šค ์ˆ˜์ค€ ํ•„๋“œ๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์„ค์ • ๋˜๋Š” ํ•ด์ฒด์— ์˜์กดํ•  ๋•Œ ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์Ÿ ์กฐ๊ฑด ๋•Œ๋ฌธ์— ๋ฌธ์ œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ํ•œ ๊ฐ€์ง€ ํ•ด๊ฒฐ์ฑ…์€ ๊ฐ WorkItem์ด ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค์˜ ์ƒˆ ์ธ์Šคํ„ด์Šค์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, ์ด๋Š” ๋” ์ด์ƒ ๊ณ ์ • ์žฅ์น˜์˜ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ณ ์ • ์žฅ์น˜ ์„ค์ •์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค

@chris-smith-zocdoc ๋„ค, ๊ทธ๊ฒŒ NUnit๊ณผ ์ „์ž„์ž junit์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ์ฐฌ๋ฐ˜ ์–‘๋ก ์ด ๋„๋ฆฌ ๋…ผ์˜๋˜์—ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ๋งŽ์ด ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ NUnit ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋“  ์ดˆ๊ธฐํ™”๊ฐ€ SetUp ๋ฉ”์„œ๋“œ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ƒํƒœ ๋น„์ €์žฅ์œผ๋กœ ๊ฐ€์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

TestFixtureSetUp(ํ˜„์žฌ OneTimeSetUp์ด๋ผ๊ณ  ํ•จ)์ด ๋„์ž…๋˜๋ฉด ๋” ๋น„์‹ผ ์ดˆ๊ธฐํ™”๋ฅผ ํ•œ ๋ฒˆ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ๋™์ผํ•œ ์ดˆ๊ธฐํ™” ๊ฐ’์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ…Œ์ŠคํŠธ ์ค‘์ธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๊ฐ€์žฅ ์œ ์šฉํ•˜๋ฉฐ, ๊ทธ ์ž์ฒด๊ฐ€ ์ƒํƒœ ์ €์žฅ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ ๋ช‡ ๋…„ ๋™์•ˆ ์ ์  ๋” ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ณ„๋กœ ๋ณ„๋„์˜ ์‚ฌ์šฉ์ž ํ”ฝ์Šค์ฒ˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ์ฃผ์ œ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ์˜ฌ๋ผ์˜ต๋‹ˆ๋‹ค. ์•„์ง๊นŒ์ง€ ์˜ˆ์ •๋œ ๊ธฐ๋Šฅ์˜ ๋‹จ๊ณ„์— ์ด๋ฅด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™•์‹คํžˆ ์‚ฌ์šฉ์ž ์ธก์˜ ๋ณ‘๋ ฌ ๋ฐฉ์‹ ๊ธฐ๋Šฅ์˜ ์œ ์šฉ์„ฑ๊ณผ ๊ด€๋ จ์ด ์žˆ์ง€๋งŒ ๊ตฌํ˜„๊ณผ ์ง๊ตํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋‹น ์ƒˆ ์กฐ๋ช…๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ "์ผํšŒ์„ฑ" ์„ค์ •์„ ๋‘ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ •์ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ํฐ ํƒ€๊ฒฉ์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ข

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

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

์ธ์Šคํ„ด์Šค๋‹น ์ƒˆ ์กฐ๋ช…๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ "์ผํšŒ์„ฑ" ์„ค์ •์„ ๋‘ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ •์ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ ํฐ ํƒ€๊ฒฉ์„ ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

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

์ €๋ฅผ ๊ณ„์‚ฐํ•ด ์ฃผ์„ธ์š”.

๋‚˜๋„!

2017๋…„ 1์›” 14์ผ ํ† ์š”์ผ ์˜ค์ „ 3์‹œ 58๋ถ„, Joseph Musser [email protected]
์ผ๋‹ค:

>
>
>
>

[์ด๋ฏธ์ง€: ๋ฐ•์Šค๋น„] https://www.boxbe.com/overview

์ž๋™ ์ •๋ฆฌ: ๋งˆ์ง€๋ง‰ 1๊ฐœ ์ด๋ฉ”์ผ ๋ณด๊ด€([email protected])

๊ทœ์น™ ์ˆ˜์ •
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3Dwa43L7bW5j4V5ymh5QXh%252FNXk%252F0KVSSFJSqwHw2yu4No%253D%26token%3DjkWoQ96YyOE%252FHA7PvZA8g%252FOAgpOQMZdIE7ophiWCxqx1y6zZCFJ%252FKSZ2WZELsWD3YQoDEdjwb%252BWo6wGi4xiUEkGngbggedv8iYBxU7zk% 252FJamyOuVtPzie4dhQJXQkQQ%252BtolspNKBzqBxtH6H%252FhqnTQ%253D%253D&tc_serial=28420100882&tc_rand=1283ut39648

| ๊ทœ์น™ ์‚ญ์ œ
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3Dwa43L7bW5j4V5ymh5QXh%252FNXk%252F0KVSSFJSqwHw2yu4No%253D%26token%3DjkWoQ96YyOE%252FHA7PvZA8g%252FOAgpOQMZdIE7ophiWCxqx1y6zZCFJ%252FKSZ2WZELsWD3YQoDEdjwb%252BWo6wGi4xiUEkGngbggedv8iYBxU7zk% 252FJamyOuVtPzie4dhQJXQkQQ%252BtolspNKBzqBxtH6H%252FhqnTQ%253D%253D&tc_serial=28420100882&tc_rand=1283ut39648

| ์ค‘์š” ํ‘œ์‹œ
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3Dwa43L7bW5j4V5ymh5QXh%252FNXk%252F0KVSSFJSqwHw2yu4No%253D%26token%3DjkWoQ96YyOE%252FHA7PvZA8g%252FOAgpOQMZdIE7ophiWCxqx1y6zZCFJ%252FKSZ2WZELsWD3YQoDEdjwb%252BWo6wGi4xiUEkGngbggedv8iYBxU7zk% 252FJamyOuVtPzie4dhQJXQkQQ % 252BtolspNKBzqBxtH6H 252FhqnTQ % % % 253D 253D 26important % % % 3Dtrue 26emlId % 3D54854949581 ๋ฐ tc_serial = 28,420,100,882 ๋ฐ tc_rand = 128,339,648 = & utm_source๋ฅผ STF ๋ฐ ์ด๋ฉ”์ผ์— utm_medium = & utm_campaign์„ ANNO_CLEANUP_EDIT = & ํ•œ utm_content = 001

์ธ์Šคํ„ด์Šค๋‹น ์ƒˆ ์กฐ๋ช…๊ธฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ "ํ•˜๋‚˜"๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์‹œ๊ฐ„ ์„ค์ •์„ ๋‘ ๋ฒˆ ์ด์ƒ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋Š”
์ •์ ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์ •์  ์ƒํƒœ๊ฐ€ ์—†๋„๋ก ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๋ณ‘๋ ฌ ์‹คํ–‰์„ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.
์ •์  ์ƒํƒœ์™€ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ˜ผํ•ฉํ•˜๊ธฐ ์œ„ํ•œ ์ค‘๋‹จ. ์šด ์ข‹๊ฒŒ๋„ ์ด ๋ชจ๋“  ์ฝ”๋“œ๋Š”
ํ…Œ์ŠคํŠธ ์ค‘์ด๋‹ˆ ๋†“์น˜์ง€ ๋งˆ์„ธ์š” :D

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

์ €๋ฅผ ๊ณ„์‚ฐํ•ด ์ฃผ์„ธ์š”.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/nunit/nunit/issues/164#issuecomment-272488655 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAHNVlwVps8pQ93UIwZw6zY7TOyHO0a6ks5rR61EgaJpZM4CUZ8r
.

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

๋ฐฉ๋ฒ•์ด ์™„์ „ํžˆ ๋ณ‘๋ ฌํ™”ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ __๋‹ค๋ฅธ ๋ฐฉ๋ฒ•__๊ณผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. OTOH, ํ”ฝ์Šค์ณ ๋‚ด์—์„œ๋งŒ ๋ณ‘๋ ฌํ™”ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ __๋™์ผํ•œ ํ”ฝ์Šค์ฒ˜์˜ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ์™€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.__

์ €๋Š” ์ด ๊ตฌ๋ถ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•  ๊ฒƒ์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

  1. ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ์— Parallelizable ์†์„ฑ์ด ์—†๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์†์„ฑ(์˜ˆ: ์•„ํŒŒํŠธ)์—์„œ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š” ํ•œ ํฌํ•จํ•˜๋Š” ๊ณ ์ • ์žฅ์น˜์™€ ๋™์ผํ•œ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฒ”์œ„๊ฐ€ Self์ธ Parallelizable ์†์„ฑ์ด ์žˆ๊ฑฐ๋‚˜ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์ œํ’ˆ๊ตฐ์ด Children์˜ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๋Š” ์กฐ๋ช…๊ธฐ์˜ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ์™€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ƒ๊ฐ @nunit/core-team ?

์œ„์—์„œ ์ œ์™ธ:

  1. ๋ฒ”์œ„๊ฐ€ None์ธ Parallelizable ์†์„ฑ์ด ์žˆ์œผ๋ฉด ๋ณ‘๋ ฌ์ด ์•„๋‹Œ ํ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

@CharliePoole - ๊ท€ํ•˜์˜ 3๊ฐ€์ง€ ํฌ์ธํŠธ๋Š” ์ดํ•ด๊ฐ€ ๋˜์ง€๋งŒ, ๊ท€ํ•˜๊ฐ€ ์ œ์•ˆํ•˜๋Š” ๋Œ€์•ˆ์ด ๋ฌด์—‡์ธ์ง€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ช…ํ™•ํžˆ ํ•ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

ํ˜„์žฌ ํŠน์„ฑ์ด ์—†๋Š” ๊ฒƒ์€ ParallelScope.None์ด ์žˆ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ๋””์ŠคํŒจ์น˜๋ฅผ โ€‹โ€‹ํ™œ์„ฑํ™”ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์‹คํ–‰์ด ํฌ๊ฒŒ ๋Š๋ ค์ง€๋ฉด ๋ณ‘๋ ฌ์ด ์•„๋‹Œ ๋Œ€๊ธฐ์—ด์— ๋Œ€๊ธฐ์—ด์— ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.

PR #2011์€ ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ดˆ๊ธฐ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ํฌํ•จ๋œ ๊ณ ์ • ์žฅ์น˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” #define์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜๊ฒฌ์€ ๊ทธ ์ œํ•œ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์„ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ”ฝ์Šค์ฒ˜์˜ OneTimeTearDown์€ ์‹คํ–‰๋œ ๋งˆ์ง€๋ง‰ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜๋ฉด ์–ด๋–ค ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ๋ ์ง€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Fixture์— ํ•„์š”ํ•œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ํŠน์„ฑ์„ ๊ฐ€์ง„ ์Šค๋ ˆ๋“œ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์™„๋ฃŒํ•  ํ…Œ์ŠคํŠธ๊ฐ€ STA์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ OneTimeSetUp์ด MTA์—์„œ ์‹คํ–‰๋œ ๊ฒฝ์šฐ์—๋„ ์ด ํ…Œ์ŠคํŠธ๊ฐ€ OneTimeTearDown์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ผ๋ถ€์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋” ๋†’์€ ์ˆ˜์ค€์˜ ํ”ฝ์Šค์ฒ˜์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณ‘๋ ฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๋„์ž…์€ ์˜ค๋ฅ˜๋ฅผ ์œ ๋ฐœํ•˜๋Š” ๋ถˆ์ผ์น˜์— ๋Œ€ํ•œ ๋” ๋งŽ์€ ๊ธฐํšŒ๊ฐ€ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๊ณ ์ • ์žฅ์น˜ ๋ถ„ํ•ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์ข…๋ฅ˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ๋ฐœ์ƒํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ์˜ ์Šค๋ ˆ๋“œ์—์„œ ๋” ์ด์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ , ๋””์ŠคํŒจ์ฒ˜๋Š” ๋ณด๋ฅ˜ ์ค‘์ธ ๋ชจ๋“  ๋ถ„ํ•ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ ์ ์ ˆํ•œ ์‹œ๊ฐ„์— ์ ์ ˆํ•œ ์Šค๋ ˆ๋“œ์—์„œ ํ•ด๋‹น ๋ถ„ํ•ด๋ฅผ ์‹คํ–‰ํ•˜๋ผ๋Š” ์•Œ๋ฆผ์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ด ๊ธฐ๋Šฅ์˜ "์„ค๊ณ„" ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

2014๋…„ ์ดˆ๋ถ€ํ„ฐ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ํŒ”๋กœ์šฐํ•˜๊ณ  ์žˆ๊ณ  ์ด ๊ธฐ๋Šฅ ์ถ”๊ฐ€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ž์ฒด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š๊ฑฐ๋‚˜ ๊ตฌํ˜„ํ•  ์ˆ˜ ์—†๋Š” ์‚ฌ๋žŒ์„ ์œ„ํ•ด NUnit 2.6.3์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌํ˜„์„ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๊ธฐ ๋งค์šฐ ๊ฐ„๋‹จํ•ด ๋ณด์ด๋Š” CodePlex(์—ฌ๋Ÿฌ ๋ณ‘๋ ฌ ์Šค๋ ˆ๋“œ์—์„œ ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ž‘๋™ํ•จ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค).

http://cpntr.codeplex.com/

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

@์ฐฐ๋ฆฌํ’€

๋”ฐ๋ผ์„œ ๊ณ ์ • ์žฅ์น˜ ๋ถ„ํ•ด๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์ข…๋ฅ˜์˜ ์Šค๋ ˆ๋“œ์—์„œ ๋ฐœ์ƒํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰ํ•  ํ…Œ์ŠคํŠธ์˜ ์Šค๋ ˆ๋“œ์—์„œ ๋” ์ด์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹ , ๋””์ŠคํŒจ์ฒ˜๋Š” ๋ณด๋ฅ˜ ์ค‘์ธ ๋ชจ๋“  ๋ถ„ํ•ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฉฐ ์ ์ ˆํ•œ ์‹œ๊ฐ„์— ์ ์ ˆํ•œ ์Šค๋ ˆ๋“œ์—์„œ ํ•ด๋‹น ๋ถ„ํ•ด๋ฅผ ์‹คํ–‰ํ•˜๋ผ๋Š” ์•Œ๋ฆผ์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์ด ๊ธฐ๋Šฅ์˜ "์„ค๊ณ„" ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.

๋””์ŠคํŒจ์ฒ˜๊ฐ€ ๋ณด๋ฅ˜ ์ค‘์ธ ๋ถ„ํ•ด ํ•ญ๋ชฉ์„ ๋ฏธ๋ฆฌ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋””์ŠคํŒจ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋” ๊ตฌ์ฒด์ ์œผ๋กœ, CompositeWorkItem์ด ํ˜„์žฌ PerformOneTimeTearDown ์„ ํ˜ธ์ถœํ•˜๋Š” ์œ„์น˜์—์„œ ๋””์ŠคํŒจ์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ์ž‘์—… ๋‹จ์œ„๋ฅผ ์˜ฌ๋ฐ”๋ฅธ ์ž‘์—… ๊ต๋Œ€์— ํŒŒ๊ฒฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@chris-smith-zocdoc ๋„ค, ๊ทธ๊ฒŒ ๋ฐ”๋กœ ์ œ๊ฐ€ ํ•˜๋Š” ์ผ์ž…๋‹ˆ๋‹ค. CompositeWorkItem ์ค‘์ฒฉ๋˜์–ด ์žˆ๊ณ  ๋งˆ์ง€๋ง‰ ์ž์‹ ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ์ „๋‹ฌ๋˜๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ์ž‘์—… ํ•ญ๋ชฉ OneTimeTearDownWorkItem ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— OneTimeSetUp๊ณผ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ๋™์ผํ•œ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋˜์—ˆ์„ ๋•Œ ๋ช‡ ๊ฐ€์ง€ ํšจ์œจ์„ฑ์„ ์‚ดํŽด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฒƒ์„ ๋„ˆ๋ฌด ์ฃผ์˜ ๊นŠ๊ฒŒ ์ฝ์ง€๋Š” ์•Š์•˜์ง€๋งŒ ์ด ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€๋กœ ์š”์ฒญํ•˜๊ณ  ์‹ถ์€ ํ•œ ๊ฐ€์ง€๋Š” ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๊ฐ€ ํŠนํžˆ I/O ๋ฐ”์šด๋“œ ํ…Œ์ŠคํŠธ์˜ ๊ฒฝ์šฐ "์Šค๋งˆํŠธ"ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 100๊ฐœ์˜ ๋ณ‘๋ ฌํ™” ๊ฐ€๋Šฅํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” 10๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ 10๊ฐœ์˜ ์Šค๋ ˆ๋“œ๊ฐ€ ์•‰์•„์„œ ๋‹ค์Œ 10๊ฐœ์˜ ํ…Œ์ŠคํŠธ๋กœ ์ด๋™ํ•˜๊ธฐ ์ „์— ์ฒ˜์Œ 10๊ฐœ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ 10๊ฐœ์˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๋งค์šฐ ์˜ค๋ž˜ ์‹คํ–‰๋˜๋Š” I/O ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์Šค๋ ˆ๋“œ๋Š” ๋‹ค๋ฅธ ํ…Œ์ŠคํŠธ๋กœ ์ž์œ ๋กญ๊ฒŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. I/O ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ด์ œ๋˜๋ฉด ์Šค๋ ˆ๋“œ๊ฐ€ ๋Œ€๊ธฐ ์ค‘์ธ ํ…Œ์ŠคํŠธ๋ฅผ ์žฌ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ async/await๋ฅผ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” I/O ๋ฐ”์šด๋“œ ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ์Šค๋งˆํŠธ ์ฒ˜๋ฆฌ๋Ÿ‰ ๊ด€๋ฆฌ๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ง€๊ธˆ๊นŒ์ง€ ํ…Œ์ŠคํŠธ์—์„œ ๊ฐ€์žฅ ํฐ ๋ณ‘๋ชฉ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.

@chris-smith-zocdoc ์‚ฌ์‹ค, ๊ทธ๊ฒŒ ์ œ๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ์ผ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ์กด ์นด์šดํŠธ๋‹ค์šด ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ผํšŒ์„ฑ ๋ถ„ํ•ด ์ž‘์—…์˜ ๋””์ŠคํŒจ์น˜๋ฅผ โ€‹โ€‹ํŠธ๋ฆฌ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ฒฐ์€ ์ ์ ˆํ•œ ๋Œ€๊ธฐ์—ด์— ์ „๋‹ฌ๋˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@gzak ๋ณ‘๋ ฌ ์‹คํ–‰์„ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋Š” ์ ์„ ์—ผ๋‘์— ๋‘์‹ญ์‹œ์˜ค. ์ž‘์—…์ž์—๊ฒŒ ์ž‘์—…์„ ํ‘ธ์‹œํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์•„๋‹ˆ๋ผ ์ž‘์—…์ž๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…์„ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐ ์˜์กดํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•œ ์ž‘์—…์ž๊ฐ€ ํ•œ๋™์•ˆ ์ž‘์—…์œผ๋กœ ๋ฐ”์˜๋ฉด ๋‹ค๋ฅธ ์ž‘์—…์ž๊ฐ€ ๊ณ„์† ๋‹ค๋ฅธ ์ž‘์—…์„ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ฒฐ์€ ์‹คํ–‰ ์ค‘์ธ ํ…Œ์ŠคํŠธ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ์ž‘์—…์ž ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. NUnit์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ๋ฐ˜ ์ปดํ“จํŒ… ๋ฐ”์šด๋“œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์—์„œ ์ƒ๋‹นํžˆ ์ž˜ ์ˆ˜ํ–‰๋˜์ง€๋งŒ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ ์ ˆํ•œ ์ˆ˜์ค€์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?
์‹œํ—˜ ์ˆ˜์—…์ด ์žˆ์–ด์š”
๋ณ‘๋ ฌ์ด ์•„๋‹Œ ์ด ํด๋ž˜์Šค์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ - ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
๊ทธ๋Ÿฌ๋‚˜ [Parallelizable(ParallelScope.Children)]๋กœ ์‹คํ–‰ํ•  ๋•Œ
๋”ฐ๋ผ์„œ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(๊ฐ™์€ ํด๋ž˜์Šค์˜ ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ).
๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์ด์œ ๋กœ ์ผ๋ถ€ ํ…Œ์ŠคํŠธ๋Š” ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.
์ด ํด๋ž˜์Šค์—๋Š” ํ…Œ์ŠคํŠธ ์ „๋ฐ˜์— ๊ฑธ์ณ ์‚ฌ์šฉ๋˜๋Š” ์ธ์Šคํ„ด์Šค ํ•„๋“œ๊ฐ€ ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ํ•„๋“œ๋Š” ์Šค๋ ˆ๋“œ ๊ฐ„์— ๊ณต์œ ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋‚ด ๋ง์ด ๋งž์•„?
ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค๊ณ  ์ด ๋‹จ์ผ ๊ฐœ์ฒด์—์„œ ๋™์‹œ์— ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๊นŒ?
์ฐฐ๋ฆฌํ’€

๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์•Œ์•„ ๋ƒˆ์–ด! ์˜ˆ, ๊ณ ์ • ์žฅ์น˜์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋Š” ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํ•ญ์ƒ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•ด ์˜จ NUnit์˜ ์—ญ์‚ฌ์  ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ ํ…Œ์ŠคํŠธ๋ณ„๋กœ ์ˆ˜์ •๋˜๋Š” ์ƒํƒœ ์ค‘์—์„œ ์„ ํƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ ์ ˆํ•œ ๋น„์œจ์˜ ์กฐ๋ช…๊ธฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‹จ์ˆœํžˆ ์กฐ๋ช…๊ธฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ข‹์€ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Parallelizable(ParallelScope.Children)]์€
AssemblyInfo.cs ํŒŒ์ผ?

์•„๋ฌด๋„ ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

2017๋…„ 6์›” 14์ผ 01:37์— CharliePoole [email protected]์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

[์ด๋ฏธ์ง€: ๋ฐ•์Šค๋น„] https://www.boxbe.com/overview ์ž๋™ ์ •๋ฆฌ: ์œ ์ง€
์ตœ๊ทผ 1๊ฐœ ์ด๋ฉ”์ผ([email protected]) ๊ทœ์น™ ์ˆ˜์ •
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3DCCP9ir0TebdbdQOWVtGMQyr2TETYOrzfkbItPzUTgDk%253D%26token%3D0PvYtf1G2B%252FJ2FNN3b7MTSmP1zvs6x3Cu8z6LaAB8%252BJm73uy8ZNUCnQcknlgWKxRQ5zjE%252BY30Xkv1W1Gue9gGnpyi72YUTaHP2h6wvuEpTXe1WoQDoSHpUGDQefgQu6LDH0rRhsEvF%252FW%252BhysbMtsDw%253D% 253D&tc_serial=30872123699&tc_rand=2087335475&utm_source=stf&utm_medium=email&utm_campaign=ANNO_CLEANUP_EDIT&utm_content=001
| ๊ทœ์น™ ์‚ญ์ œ
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3DCCP9ir0TebdbdQOWVtGMQyr2TETYOrzfkbItPzUTgDk%253D%26token%3D0PvYtf1G2B%252FJ2FNN3b7MTSmP1zvs6x3Cu8z6LaAB8%252BJm73uy8ZNUCnQcknlgWKxRQ5zjE%252BY30Xkv1W1Gue9gGnpyi72YUTaHP2h6wvuEpTXe1WoQDoSHpUGDQefgQu6LDH0rRhsEvF%252FW%252BhysbMtsDw%253D% 253D&tc_serial=30872123699&tc_rand=2087335475&utm_source=stf&utm_medium=email&utm_campaign=ANNO_CLEANUP_EDIT&utm_content=001
| ์ค‘์š” ํ‘œ์‹œ
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3DCCP9ir0TebdbdQOWVtGMQyr2TETYOrzfkbItPzUTgDk%253D%26token%3D0PvYtf1G2B%252FJ2FNN3b7MTSmP1zvs6x3Cu8z6LaAB8%252BJm73uy8ZNUCnQcknlgWKxRQ5zjE%252BY30Xkv1W1Gue9gGnpyi72YUTaHP2h6wvuEpTXe1WoQDoSHpUGDQefgQu6LDH0rRhsEvF%252FW%252BhysbMtsDw%253D% 253D%26์ค‘์š”%3Dtrue%26emlId%3D61187554820&tc_serial=30872123699&tc_rand=2087335475&utm_source=stf&utm_medium00content=stf&utm_medium_email&utm_campaign=์ด๋ฉ”์ผ

๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ ์•Œ์•„ ๋ƒˆ์–ด! ์˜ˆ, ๊ณ ์ • ์žฅ์น˜์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋Š” ๋™์ผํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ ํ•ญ์ƒ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•ด ์˜จ NUnit์˜ ์—ญ์‚ฌ์  ์‚ฌ์‹ค์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค
ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ๊ณผ
ํ…Œ์ŠคํŠธ๋ณ„๋กœ ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ๋ฐฉ๋ฒ•์ด ์—†์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ ์ ˆํ•œ ๋น„์œจ์˜ ๊ณ ์ • ์žฅ์น˜๊ฐ€ ์žˆ์œผ๋ฉด ๊ฐ„๋‹จํžˆ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค.
์กฐ๋ช…๊ธฐ๋ฅผ ๋ณ‘๋ ฌ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด ์ข‹์€ ์„ฑ๋Šฅ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/nunit/nunit/issues/164#issuecomment-308157832 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAHNVuK-J-X74mlAA_eT7OX7dxs7MpoRks5sDqzLgaJpZM4CUZ8r
.

@agray ์˜ˆ, ์‚ฌ์‹ค ์ด๊ฒƒ์ด ์ œ๊ฐ€ ์ง€๊ธˆ AssemblyInfo.cs๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์œ ์ผํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” ์กฐ์…‰,

AssemblyInfo.cs ํŒŒ์ผ์— ์–ด๋–ค ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๋ผ์ธ์„ ์ถ”๊ฐ€ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

์–ด๋–ค ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ,

์•ค๋“œ๋ฅ˜

2017๋…„ 6์›” 14์ผ ์ˆ˜์š”์ผ ์˜คํ›„ 4์‹œ 17๋ถ„, Joseph Musser [email protected]
์ผ๋‹ค:

[์ด๋ฏธ์ง€: ๋ฐ•์Šค๋น„] https://www.boxbe.com/overview ์ž๋™ ์ •๋ฆฌ: ์œ ์ง€
์ตœ๊ทผ 1๊ฐœ ์ด๋ฉ”์ผ([email protected]) ๊ทœ์น™ ์ˆ˜์ •
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3DnRGYOf%252FKR68McP8RTipuFTLF9WUvAkSKSh6OYJYvJ2w%253D%26token%3DDcwWzMT9yPtQLckdXD3BLhW5xAB%252BMpc9XdsrbBlwdQJZC%252Bjo3SjsyMVC8vese%252BCNRw2IyucWqEcHR5Is7CK7nx01VuSQESvjG4ZUj%252B2Cfcwg51yUFFQJSwrmTVxqAk4%252BTVGDSrnutdAuqiJ3kTaYQA% 253D%253D&tc_serial=30882364582&tc_rand=1974513896&utm_source=stf&utm_medium=email&utm_campaign=ANNO_CLEANUP_EDIT&utm_content=001
| ๊ทœ์น™ ์‚ญ์ œ
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3DnRGYOf%252FKR68McP8RTipuFTLF9WUvAkSKSh6OYJYvJ2w%253D%26token%3DDcwWzMT9yPtQLckdXD3BLhW5xAB%252BMpc9XdsrbBlwdQJZC%252Bjo3SjsyMVC8vese%252BCNRw2IyucWqEcHR5Is7CK7nx01VuSQESvjG4ZUj%252B2Cfcwg51yUFFQJSwrmTVxqAk4%252BTVGDSrnutdAuqiJ3kTaYQA% 253D%253D&tc_serial=30882364582&tc_rand=1974513896&utm_source=stf&utm_medium=email&utm_campaign=ANNO_CLEANUP_EDIT&utm_content=001
| ์ค‘์š” ํ‘œ์‹œ
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3DnRGYOf%252FKR68McP8RTipuFTLF9WUvAkSKSh6OYJYvJ2w%253D%26token%3DDcwWzMT9yPtQLckdXD3BLhW5xAB%252BMpc9XdsrbBlwdQJZC%252Bjo3SjsyMVC8vese%252BCNRw2IyucWqEcHR5Is7CK7nx01VuSQESvjG4ZUj%252B2Cfcwg51yUFFQJSwrmTVxqAk4%252BTVGDSrnutdAuqiJ3kTaYQA% 253D%253D%26์ค‘์š”%3Dtrue%26emlId%3D61214070592&tc_serial=30882364582&tc_rand=1974513896&utm_source=stf&utm_medium=email&utm

@array https://github.com/array ์˜ˆ, ์‚ฌ์‹ค ๊ทธ๊ฒŒ ์ œ๊ฐ€ ์œ ์ผํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค.
์ง€๊ธˆ AssemblyInfo.cs๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โ€”
๋‹น์‹ ์ด ๋Œ“๊ธ€์„ ๋‹ฌ์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/nunit/nunit/issues/164#issuecomment-308325726 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAHNVghNAX8CJkqAy-qhAz8bXNhZcFOQks5sD3NigaJpZM4CUZ8r
.

@agray ๊ท€ํ•˜๊ฐ€ ์งˆ๋ฌธํ•œ ๋‚ด์šฉ:

c# [Parallelizable(ParallelScope.Children)]

๋ชฉํ‘œ๋ฅผ ์žŠ์ง€ ๋งˆ์„ธ์š”

[assembly: Parallelizable(ParallelScope.Children)]

@LirazShay NUnit์„ ์‚ฌ์šฉํ•˜์—ฌ Selenium ํ…Œ์ŠคํŠธ๋ฅผ ๊ตฌ๋™ํ•˜๊ณ  ์‚ฌ์šฉ์ž ๊ณ„์ •์— ๋Œ€ํ•œ ์ฐธ์กฐ ๋ฐ ๋‚ด๊ฐ€ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋˜ Selenium WebDriver ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ฐธ์กฐ์™€ ๊ฐ™์€ ํ•ญ๋ชฉ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์ • ์žฅ์น˜ ์ˆ˜์ค€ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์ • ์žฅ์น˜ ๋‚ด์—์„œ ๋ณ‘๋ ฌ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๋ฐฉ๋ฒ•์€ ๊ฐ ํ…Œ์ŠคํŠธ์— ๋Œ€ํ•ด ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์บก์Šํ™”ํ•˜๊ณ  ๋ ๋ถ€๋ถ„์—์„œ ๊น”๋”ํ•˜๊ฒŒ ๋ถ„ํ•ดํ•˜๋Š” IDisposable์„ ๊ตฌํ˜„ํ•˜๋Š” "ํŒฉํ† ๋ฆฌ"(๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์šฉ์–ด์ธ์ง€ ํ™•์‹ ์ด ์„œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค)๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด [TearDown] ๋˜๋Š” [OneTimeTearDown]์ด ํ•„์š” ์—†๋Š” ํ…Œ์ŠคํŠธ:

 public class TestFactory : IDisposable
    {
    // Instantiate a new SafeHandle instance.
    private readonly System.Runtime.InteropServices.SafeHandle handle = new Microsoft.Win32.SafeHandles.SafeFileHandle(IntPtr.Zero, true);

    // Flag: Has Disposed been called?
    private bool disposed = false;

    public TestFactory()
    {
        this.UserRepository = new List<UserAccount>();
        this.DU = new DataUtility();
    }

    // A list of users created for this test
    public List<UserAccount> UserRepository { get; private set; }

    // A very simple data layer utility that uses Dapper to interact with the database in my application 
    public DataUtility DU { get; private set; }

    // Gets a new user and adds it to the repository
    public UserAccount GetNewUser()
    {
        var ua = new UserAccount();
        this.UserRepository.Add(ua);
        return ua;
    }


    public void Dispose()
    {
        this.Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (this.disposed)
        {
            return;
        }

        if (disposing)
        {
            // Deletes all user accounts created during the test
            foreach (UserAccount ua in this.UserRepository)
            {
                try
                {
                    ua.Delete();
                }
                catch (Exception)
                {
                    // Take no action if delete fails.
                }
            }

            this.DU.DeleteNullLoginFailures(); // Cleans up the database after tests
            Thread.Sleep(1500);
        }

        this.disposed = true;
    }
}

๊ทธ๋Ÿฐ ๋‹ค์Œ ํ…Œ์ŠคํŠธ ๋‚ด์—์„œ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[TestFixture]
public class UserConfigureTests
{
    [Test]
    public void MyExampleTest()
    {
        using (TestFactory tf = new TestFactory())
        {
            var testUser = tf.GetNewUser();

    tf.DU.DoSomethingInTheDatabase(myParameter);

    // Test actions go here, and when we exit this using block the TestFactory cleans
    // up after itself using the Dispose method which calls whatever cleanup logic you've written into it
        }
    }
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋งŽ์€ ์ฝ”๋“œ ์ค‘๋ณต์„ ํ”ผํ•  ์ˆ˜ ์žˆ๊ณ  ํ…Œ์ŠคํŠธ์˜ ์ข…์†์„ฑ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต์žฅ์—์„œ ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ๋‚ด๊ฐ€ ์ทจํ•œ ์ „๋žต์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์ด ์žˆ๋‹ค๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

@tparikka ๋‚˜๋Š” ๊ทธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๋‚˜ ์ž์‹ ์—๊ฒŒ ๊ฐ•๋ ฅํžˆ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

๋‚ด AssemblyInfo ํŒŒ์ผ์— ๋‹ค์Œ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

[์–ด์…ˆ๋ธ”๋ฆฌ: Parallelizable(ParallelScope.Children)]
[์–ด์…ˆ๋ธ”๋ฆฌ: LevelOfParallelism(16)]

LevelOfParallelism ์†์„ฑ๋„ ๋” ์ด์ƒ ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

2017๋…„ 6์›” 15์ผ 04:37์— Joseph Musser [email protected] ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์Šต๋‹ˆ๋‹ค.

[์ด๋ฏธ์ง€: ๋ฐ•์Šค๋น„] https://www.boxbe.com/overview ์ž๋™ ์ •๋ฆฌ: ์œ ์ง€
์ตœ๊ทผ 1๊ฐœ ์ด๋ฉ”์ผ([email protected]) ๊ทœ์น™ ์ˆ˜์ •
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3Doth%252FFbAPG%252FhDbtUlS0i2PDDdQ0lP4dBi8o7QQmkLEMQ%253D%26token%3DHe7HfTrm%252Fiba3yIDazaBx8JO9NrmoL8p5TWtDB1hUxq0qp%252BhCRCB3OSl7sUQ6wDshc2I5LQhbR2jszLWr6FnRy%252FZUrCqghZIIilbDWKszT7pkI44xp9vaL6cszH9Sgg1YPCAHdVWqccZYxYXGW174A%253D% 253D&tc_serial=30894750852&tc_rand=1847060911&utm_source=stf&utm_medium=email&utm_campaign=ANNO_CLEANUP_EDIT&utm_content=001
| ๊ทœ์น™ ์‚ญ์ œ
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3Doth%252FFbAPG%252FhDbtUlS0i2PDDdQ0lP4dBi8o7QQmkLEMQ%253D%26token%3DHe7HfTrm%252Fiba3yIDazaBx8JO9NrmoL8p5TWtDB1hUxq0qp%252BhCRCB3OSl7sUQ6wDshc2I5LQhbR2jszLWr6FnRy%252FZUrCqghZIIilbDWKszT7pkI44xp9vaL6cszH9Sgg1YPCAHdVWqccZYxYXGW174A%253D% 253D&tc_serial=30894750852&tc_rand=1847060911&utm_source=stf&utm_medium=email&utm_campaign=ANNO_CLEANUP_EDIT&utm_content=001
| ์ค‘์š” ํ‘œ์‹œ
https://www.boxbe.com/popup?url=https%3A%2F%2Fwww.boxbe.com%2Fcleanup%3Fkey%3Doth%252FFbAPG%252FhDbtUlS0i2PDDdQ0lP4dBi8o7QQmkLEMQ%253D%26token%3DHe7HfTrm%252Fiba3yIDazaBx8JO9NrmoL8p5TWtDB1hUxq0qp%252BhCRCB3OSl7sUQ6wDshc2I5LQhbR2jszLWr6FnRy%252FZUrCqghZIIilbDWKszT7pkI44xp9vaL6cszH9Sgg1YPCAHdVWqccZYxYXGW174A%253D% 253D%26์ค‘์š”%3Dtrue%26emlId%3D61245244440&tc_serial=30894750852&tc_rand=1847060911&utm_source=stf&utm_medium_0content=stf&utm_medium_email&utm_campaign=email&utm_campaign=

@tparikka https://github.com/tparikka ๋ฐ”๋กœ ๊ทธ ์ ์„ ์ ๊ทน ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
๋‚˜ ์ž์‹ ์—๊ฒŒ ์ ‘๊ทผํ•˜์‹ญ์‹œ์˜ค.

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธ
https://github.com/nunit/nunit/issues/164#issuecomment-308521058 ๋˜๋Š” ์Œ์†Œ๊ฑฐ
์Šค๋ ˆ๋“œ
https://github.com/notifications/unsubscribe-auth/AAHNVmEzVDbw32Xx0jkYcGK9bZW3tLvXks5sECh8gaJpZM4CUZ8r
.

์•„์ง LevelOfParallelism ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ณด์œ ํ•œ ์ฝ”์–ด ์ˆ˜์ž…๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๊ฐ€ CPU ๋ฐ”์šด๋“œ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋” ๋†’์€ ๊ฒƒ์ด ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ฑ๋Šฅ์ด ํ•ญ์ƒ ๊ทธ๋ ‡๋“ฏ์ด ๋‹ต์€ ์‹œ๋‚˜๋ฆฌ์˜ค์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋ฏ€๋กœ ์ถ”์ธกํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ธก์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

@CharliePoole TestcaseSource ํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ฒฐ๊ณผ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๊ฐ€ ์‹ค์ œ๋กœ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ์ž‘๋™ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋ฉ๋‹ˆ๋‹ค.

```c#
[ํ…Œ์ŠคํŠธํ”ฝ์Šค์ฒ˜]
ํด๋ž˜์Šค ์—ญ์ง๋ ฌํ™”
{
๊ณต๊ฐœ ์ •์  IEnumerableShouldDeserializeAllCases() => Enumerable.Repeat(0, 5).Select(x => TimeSpan.FromSeconds(2));

    [TestCaseSource("ShouldDeserializeAllCases"), Parallelizable(ParallelScope.Children)]
    public void ShouldDeserializeAll(TimeSpan t)
    {
        Thread.Sleep(t);
        Assert.AreEqual(1, 1);
    }
}

```

์†Œ์š”๋˜๋Š” ์ „์ฒด ์‹œ๊ฐ„์€ ~2๊ฐ€ ์•„๋‹Œ 10์ดˆ์ž…๋‹ˆ๋‹ค.

์•„์ด๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์•„์„œ ์ด ๊ฒฝ์šฐ์—๋Š”
[๋ณ‘๋ ฌ ๊ฐ€๋Šฅ(ParallelScope.All)]
๋˜๋Š” ํด๋ž˜์Šค ์ˆ˜์ค€์—์„œ ์†์„ฑ์„ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

@ParanoikCZE ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹ค์ œ๋กœ ๊ทธ ์†์„ฑ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”์— ๋Œ€ํ•ด ๋งน๋ชฉ์ ์œผ๋กœ ๋‚ ์•„๊ฐ€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๊ฑฐ๊ธฐ์— ์žˆ๋Š” ๋ชจ๋“  ์—ด๊ฑฐํ˜• ๊ฐ’์„ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. All , Children , Fixture ๋˜๋Š” Self ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜๋“  ์ƒ๊ด€์—†์ด ์‹คํ–‰ ์‹œ๊ฐ„์€ 10์ดˆ์ž…๋‹ˆ๋‹ค(์ ์–ด๋„ Visual Studio์—์„œ๋Š”).

๋ฐฉ๊ธˆ ์ˆ˜์—…์œผ๋กœ ์˜ฎ๊ธฐ๋ ค๊ณ ํ–ˆ์ง€๋งŒ ์ด๊ฒƒ๋„ ๋„์›€์ด๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ์˜๊ฐ์˜ ์›์ฒœ์ž…๋‹ˆ๋‹ค :)

class Deserialization
{
    public static IEnumerable<TestCaseData> ShouldDeserializeAllCases
    {
        get
        {
            for (int i = 1; i <= 5; i++)
                yield return new TestCaseData(TimeSpan.FromSeconds(i)).SetName($"Thread_worker_{i}");
        }
    }

    [TestCaseSource(nameof(ShouldDeserializeAllCases)), Parallelizable(ParallelScope.Children)]
    public void ShouldDeserializeAll(TimeSpan t) => System.Threading.Thread.Sleep(t);
}

@ParanoikCZE ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Visual Studio์—์„œ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ๋Š”๋ฐ ์‹œ๊ฐํ™”๊ฐ€ ํ›จ์”ฌ ๋” ๋ช…ํ™•ํ•ด์กŒ์ง€๋งŒ ํ…Œ์ŠคํŠธ๋Š” ์—ฌ์ „ํžˆ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ๊ณ„๋ฅผ ๋Š˜๋ฆฌ๋Š” ๋Œ€์‹  ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด ์ผ์ •ํ•œ ์ ˆ์ „ ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AssemblyInfo์— [assembly: LevelOfParallelism(5)]์„ ์ถ”๊ฐ€ํ•ด ๋ณด์„ธ์š”. ๊ธฐ๋ณธ๊ฐ’์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์–ด๋–ป๊ฒŒ๋“  ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“ , ๋‚˜๋Š” ์•„์ด๋””์–ด๊ฐ€ ์—†๋‹ค. :)

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