Nunit: [์ฃผ๋ฌธ]์€ TestFixtures์— ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค, ๋ฌธ์„œ ๊ฒฐํ•จ?

์— ๋งŒ๋“  2018๋…„ 10์›” 09์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: nunit/nunit

๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด: https://github.com/nunit/docs/wiki/Order-Attribute

OrderAttribute๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ ๋˜๋Š” ๊ณ ์ • ์žฅ์น˜ ์— ๋ฐฐ์น˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ๊ฐ€ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์กด์ค‘๋˜๋Š” ๊ฒƒ์„ ๋ณด์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ TextFixture ์‚ฌ๋ก€๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

[TestFixture("A", false)]
[TestFixture("B", false)]
[TestFixture("A", true)]
[TestFixture("B", true)]

์ด๊ฒƒ์€ ๋ฌด์—‡๋ณด๋‹ค ๋ฌธ์„œํ™”/์ดํ•ด๋ ฅ ๊ฒฐํ•จ์œผ๋กœ ๋Š๊ปด์ง€์ง€๋งŒ ๋งํฌ๋œ ๋ฌธ์„œ๊ฐ€ "_๋˜๋Š” ๊ณ ์ •์žฅ์น˜_"๋ผ๊ณ  ๋ช…์‹œํ•˜๋Š” ๋ฐฉ์‹์€ ๋‚ด๊ฐ€ ์“ธ ์ˆ˜ ์žˆ์Œ์„ ์•”์‹œํ•ฉ๋‹ˆ๋‹ค.

[TestFixture("A", false), Order(0)]
[TestFixture("B", false), Order(1)]
[TestFixture("A", true), Order(2)]
[TestFixture("B", true), Order(3)]

์‹ค์ œ๋กœ ์ด๊ฒƒ์€ 1, 2 ๋ฐ 3์— ๋Œ€ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ ์˜ค๋ฅ˜์ผ ๋•Œ

์ค‘๋ณต๋œ '์ฃผ๋ฌธ' ์†์„ฑ

๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ค‘๋ณต์œผ๋กœ ์ง๊ด€์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉด ์ •๋ง ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

@Aarskin ๋‹จ์ผ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ† ๋ก ์ด ๋‹จ์ผ gitHub ๋ฌธ์ œ ๋‚ด์—์„œ ์œ ์ง€๋œ๋‹ค๋ฉด ์šฐ๋ฆฌ(NUnit ๊ฐœ๋ฐœ์ž)์™€ ์‚ฌ์šฉ์ž ๋ชจ๋‘์—๊ฒŒ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ ์„ค๋ช…ํ•˜๋Š” ๋ณ€ํ˜•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ #3055์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ด...

[TestFixture("A", false), Order(0)]
[TestFixture("B", false), Order(1)]
[TestFixture("A", true), Order(2)]
[TestFixture("B", true), Order(3)]

๋‹น์‹ ์ด ์“ด ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค ...

[TestFixture("A", false)]
[TestFixture("A", true)]
[TestFixture("B", true)]
[TestFixture("B", false)]
[Order(3)]
[Order(2)]
[Order(1)]
[Order(0)]

์‚ฌ์šฉํ•˜๋ ค๋Š” 8๊ฐ€์ง€ ์†์„ฑ์˜ ๋‹ค๋ฅธ ์ˆœ์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. 4๊ฐœ์˜ TestFixture ์†์„ฑ์€ ๋ชจ๋‘ ๋™์ผํ•œ ํด๋ž˜์Šค์— ๋ฐฐ์น˜๋˜์–ด NUnit์ด ํ•ด๋‹น ํด๋ž˜์Šค๋ฅผ ๋„ค ๋ฒˆ ์ธ์Šคํ„ด์Šคํ™”ํ•ฉ๋‹ˆ๋‹ค. 4๊ฐœ์˜ Order ์†์„ฑ๋„ ๊ฐ™์€ ํด๋ž˜์Šค์— ๋ฐฐ์น˜๋˜์–ด ํ…Œ์ŠคํŠธ์— ํ•˜๋‚˜์˜ ์ˆœ์„œ๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ NUnit์˜ ์ œํ•œ์‚ฌํ•ญ์ด __์•„๋‹™๋‹ˆ๋‹ค__. C# ํŠน์„ฑ ๊ตฌ๋ฌธ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์ฃผ๋ชฉํ•ด์•ผ ํ•  ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋Œ€๊ด„ํ˜ธ ์•ˆ์˜ ๋ชจ๋“  ์†์„ฑ์€ ์†์„ฑ์„ ํ—ˆ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ์˜ ๋‹ค์Œ ์š”์†Œ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

  2. [A, B, C]์™€ ๊ฐ™์ด ๋Œ€๊ด„ํ˜ธ๋กœ ๋ฌถ์ธ ์†์„ฑ ์‹œํ€€์Šค๋Š” [A] [B] [C]์™€ ๊ฐ™์ด ๋ณ„๋„์˜ ๋Œ€๊ด„ํ˜ธ ์Œ ๋‚ด์—์„œ ๋™์ผํ•œ ์‹œํ€€์Šค์™€ ์ •ํ™•ํžˆ ๋™์ผํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.

์Šคํƒ€์ผ์˜ ๋ฌธ์ œ๋กœ, ํ…Œ์ŠคํŠธ์˜ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋„๋ก ํ•˜๋Š” ์†์„ฑ๊ณผ ํ•จ๊ป˜ ์‰ผํ‘œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ”ผํ•ฉ๋‹ˆ๋‹ค. ํ˜ผ๋ž€์„ ์ผ์œผํ‚ค๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

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

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

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ TestFixture ์†์„ฑ ๋Œ€์‹  TestFixtureSource ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. TestFixtureSourceAttribute ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ์กฐ๋ช…๊ธฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

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