Junit4: ํ–ฅ์ƒ: assertEquals()์— ๋Œ€ํ•œ BigDecimal ์ง€์›

์— ๋งŒ๋“  2010๋…„ 03์›” 25์ผ  ยท  27์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: junit-team/junit4

JUnit์„ ์‚ฌ์šฉํ•˜์—ฌ BigDecimal ๊ฐ’์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์€ ํ•ญ์ƒ ๊ณจ์นซ๊ฑฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. BigDecimal์ด equals()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ฐ€๋„๋ฅผ ๊ณ ๋ คํ•˜์ง€๋งŒ compareTo()์—์„œ๋Š” ์ด๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์ •๋ฐ€๋„๋ฅผ ์„ ํƒ์ ์œผ๋กœ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด assertEquals ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜๋ฝํ•˜๋Š” ๋Œ€์ฒด ๋ฐฉ๋ฒ•์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณต๊ฐœ ์ •์  ๋ฌดํšจ assertEquals(BigDecimal ์˜ˆ์ƒ, BigDecimal ์‹ค์ œ, ๋ถ€์šธ PrecisionMatters) {
if (์ •๋ฐ€๋„) {
Assert.assertEquals(์˜ˆ์ƒ, ์‹ค์ œ);
} ๋˜ ๋‹ค๋ฅธ {
Assert.assertEquals(0, expected.compareTo(์‹ค์ œ));
}
}

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

comparesEqualTo ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

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

ํฌํฌ๋‚˜ ํŒจ์น˜๋กœ ์‰ฝ๊ฒŒ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•˜๋‹ค๋ฉด ๊ธฐ๊บผ์ด ํ•˜๊ฒ ๋‹ค.

assertEquals์— ๋ถ€์šธ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค assertNumericallyEqualTo ์–ด์„ค์…˜์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. assertNumericallyEquals()๋กœ ์ค„์ด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ์˜๊ฒฌ์— ๋™์˜ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ assert ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํŠนํžˆ ์ฐจ์ด์ ์„ ์™„์ „ํžˆ ์•Œ์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ๋ฌธ์ œ๋ฅผ ์ง์ ‘ ๊ฒฝํ—˜ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค ์‚ฌ์ด์—์„œ ํ˜ผ๋ž€์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ์‹ค์ œ๋กœ ๋„์›€์ด ๋ ์ง€ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‚ด ๋ง์€, ์ด ๋ฌธ์ œ๋ฅผ ์ฝ์ง€ ์•Š์•˜๋‹ค๋ฉด assertEquals() ๋Œ€ํ•ด BigDecimal assertEquals() ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ ์‹ค์ œ๋กœ ๊ด‘๊ณ ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. BigDecimal#equals() ์ž‘๋™ ๋ฐฉ์‹๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ข‹์€ ์ผ์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ BigDecimal#equals() ๊ฐ€์น˜์™€ ๊ทœ๋ชจ๋ฅผ ๋ชจ๋‘ ๋น„๊ตํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๊นจ๋‹ซ๊ฒŒ ๋œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์ด ๊ทธ๋“ค์ด ์„ฑ์ทจํ•˜๋ ค๊ณ  ํ–ˆ๋˜ ๊ฒƒ์ด ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. _์ด๋‹ค_. ๋‚ด ๋ง์€, ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ๋ฉ”์„œ๋“œ์—์„œ ๋ฐ˜ํ™˜๋œ ์‹ค์ œ ๊ฐ’์ด ์˜ˆ์ƒ ๊ฐ’๊ณผ _์ •ํ™•ํžˆ_ '๋™์ผ'ํ•œ์ง€ ํ™•์ธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๋…ผ๋ฆฌ์ ์œผ๋กœ/์ˆซ์ž์ ์œผ๋กœ๋งŒ ๋™์ผํ•œ ๊ฒƒ์ด ์•„๋‹˜). ๋‹ค๋ฅธ ์‹์œผ๋กœ ๋งํ•˜๋ฉด assertEquals(0, actual.compareTo(expected)) ๊ฐ€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” assertNumericallyEquals() ๊ฐ€ (๊ฐ„๊ฒฐํ•จ์„ ์ œ์™ธํ•˜๊ณ ) ๋ฌด์—‡์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ? ๊ฐœ์ธ์ ์œผ๋กœ ์ €๋Š” Hamcrest ๋งค์ฒ˜๋ฅผ ๋งŒ๋“ค๊ณ  ์ž์ฃผ ํ•„์š”ํ•  ๊ฒฝ์šฐ assertThat(actual, isNumericallyEqualTo(expected)) ๋กœ ์ด๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ Hamcrest ๋งค์ฒ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํŠนํžˆ ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ).

๋Šฆ์€ ์ฒด์ค‘ ์ธก์ •์— ๋Œ€ํ•ด ์ฃ„์†กํ•˜์ง€๋งŒ ์ œ ๊ฐœ์ธ์ ์ธ ์˜๊ฒฌ์€ Alistair์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•˜์ž๋ฉด assertNumericallyEquals() ๋Š” assertEquals(0, actual.compareTo(expected)) ๊ฐ€ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” (๊ฐ„๊ฒฐํ•จ์„ ์ œ์™ธํ•˜๊ณ ) ๋ฌด์—‡์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

์˜๋„๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•ฉ๋‹ˆ๊นŒ? hamcrest matcher ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ €์—๊ฒŒ ์ข‹์Šต๋‹ˆ๋‹ค.

์ œํ”„๋ฆฌ,

์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•ด ๊ทธ matcher๋ฅผ ์ž˜ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๋ง์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด hamcrest์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๊ธฐ๋ฅผ ์›ํ•˜์‹ญ๋‹ˆ๊นŒ? ๋˜๋Š” JUnit์ด ์žˆ์ง€๋งŒ ํ–„ํฌ๋ ˆ์ŠคํŠธ๋Š” ์•„๋‹Œ๊ฐ€์š”?

์œ„์˜ ์ผ๋ถ€ ๋˜๋Š” ๋ชจ๋‘ -- ๋‚ด๊ฐ€ ์ž‘์„ฑํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ์ ํŠธ๋Š” ๊ฒฐ๊ตญ ์ผ๋ถ€ ์‚ฌ์šฉ์ž ์ง€์ • ํ–„ํฌ๋ ˆ์ŠคํŠธ ๋งค์ฒ˜๋ฅผ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Hamcrest ๋ฐ/๋˜๋Š” JUnit์œผ๋กœ ์ผ๋ฐ˜์ ์ธ ๊ฒฝ์šฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์ ˆ์•ฝ๋˜์ง€๋งŒ ์ด๊ฒƒ์€ ์ €์—๊ฒŒ ๊ทธ๋‹ค์ง€ ํ”ํ•œ ๊ฒฝ์šฐ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

๋œ ์œ ์šฉํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์— ๋Œ€ํ•œ ์ž‘์€ ์š”์ . BigDecimal์„ Assert.assertEquals์™€ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‹คํŒจํ•˜์—ฌ Assert.assertEquals ํ˜ธ์ถœ์„ Assert.assertTrue๋กœ ๋ณ€ํ™˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด์ œ ๋‚ด ํ…Œ์ŠคํŠธ๋Š” ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค์ฃผ์ง€ ์•Š๊ณ  ์ผ์ข…์˜ "๋ถ€์šธ ํ…Œ์ŠคํŠธ ์‹คํŒจ" ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ assertEquals(0, actual.compareTo(expected))๋Š” ํ›จ์”ฌ ๋” ์œ ์šฉํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ assertNumericallyEquals(actual, expected)์—์„œ "12.45๋ฅผ ์˜ˆ์ƒํ–ˆ์ง€๋งŒ : 123"('์‹ค์ œ' ๋ฐ '์˜ˆ์ƒ' ์ธ์ˆ˜์˜ ์‹ค์ œ ๊ฐ’).

http://www.bssd.eu/blog/?p=113 ๋„ ํฅ๋ฏธ๋กญ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/KentBeck/junit/pull/228์˜ assertEquivalent๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ž‘ํ’ˆ์€ ๋ฉ‹์ ธ ๋ณด์ธ๋‹ค. ๋‚˜๋Š” ์ „์— ์ด๊ฒƒ์„ ํ•ด๋ณธ ์ ์ด ์—†๋Š”๋ฐ, ์ด๊ฒƒ์€ ๋‚ด๊ฐ€ junit ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๊ณ , ์ด pull ์š”์ฒญ์„ ์ง์ ‘ ๋ณ‘ํ•ฉํ•˜๊ณ , ์‚ฌ์šฉ์ž ์ •์˜ ๋นŒ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๊นŒ?

http://help.github.com/send-pull-requests/ ์˜ ๋„์›€๋ง์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ž์‹ ํด๋ก  https://github.com/KentBeck/junit.git
CD ์ฃผ๋‹ˆํŠธ

๊ทธ๋Ÿฐ ๋‹ค์Œ pull ์š”์ฒญ์— ๋Œ€ํ•œ ๋ฆฌ๋ชจ์ปจ์„ ์ถ”๊ฐ€ํ•œ ๋‹ค์Œ ๊ฐ€์ ธ์˜ค๊ธฐ, ๋ณ‘ํ•ฉ ๋˜๋Š” ๋‘˜ ๋‹ค๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๊ณต์‹ junit์ด ์•„๋‹Œ pull request์ธ ๊ฒƒ์„ ๊ฐ์•ˆํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ˜„๋ช…ํ•ฉ๋‹ˆ๊นŒ? ์ด๊ฒƒ์ด ์ฃผ์š” junit ์™ธ๋ถ€์—์„œ ๋ณ€ํ˜•๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ ๋นŒ๋“œํ•˜์ง€ ์•Š์„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋„คํฌํŽœ์œ…,

๋„ค, ์ง€๊ธˆ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์˜ฌ๋ฐ”๋ฅธ ๊ธธ์„ ๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ํ’€์„ 4.10 ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•˜๋ ค๊ณ  ํ•˜์ง€๋งŒ ์›๋ž˜ ์ž‘์„ฑ์ž๋Š” git ์ƒํƒœ๋ฅผ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์„ธ์ƒ์— ํ˜ธ์˜๋ฅผ ๋ฒ ํ’€ ์‹œ๊ฐ„์ด ์žˆ๋‹ค๋ฉด KentBeck ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํฌํฌํ•˜๊ณ  ๋ชจ๋“  ๊ฒƒ์„ ๋ณ‘ํ•ฉํ•˜๊ณ  4.10 ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•ด ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ฐœํ–‰ํ•˜์—ฌ ๋ชจ๋‘์—๊ฒŒ ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ธ์  ๊ฐ€๋Š” 4.10 ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ณ‘์œผ๋กœ).

๋‚˜๋Š” ์ •๋ง๋กœ ์ด๊ฒƒ์„ ํ•œ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. :) ๊ทธ๋ž˜์„œ ๋‚˜๋Š” repo๋ฅผ ๋ถ„๊ธฐํ•˜๊ณ  [email protected] :neekfenwick/junit.git์„ ๋‚ด ๋กœ์ปฌ ์ปดํ“จํ„ฐ์— ๋ณต์ œ

git remote add upstream https://github.com/KentBeck/junit.git

์ข‹์€ ์ธก์ •์„ ์œ„ํ•ด ํ’€ ์š”์ฒญ์„ HEAD๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ณณ์— ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ถ„๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค.

git branch merge_pullreq_228
git checkout merge_pullreq_228

์ด์ œ ๋‚ด๊ฐ€ ์ฐพ์„ ์ˆ˜์žˆ๋Š” ๋ฌธ์„œ์—๋Š” "์ด์ œ ํ’€ ์š”์ฒญ์„ ๋ถ„๊ธฐ์— ๋ณ‘ํ•ฉํ•˜์‹ญ์‹œ์˜ค"๋ผ๊ณ  ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. https://github.com/KentBeck/junit/pull/228/commits ์—์„œ pull 228์— ๋Œ€ํ•œ ์ปค๋ฐ‹์„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ณ‘ํ•ฉํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

[neek junit (merge_pullreq_228)]$ git merge 57b49344
fatal: '57b49344' does not point to a commit

pull ์š”์ฒญ์€ ๋‚ด ์ž์‹ ์˜ repo/branch์— ๋Œ€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ฏ€๋กœ github web gui(AFAIK)์—์„œ Merge ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‚ด ์ž์‹ ์˜ ๋ถ„๊ธฐ์— 7๊ฐœ์˜ ์ปค๋ฐ‹์„ ๋ณ‘ํ•ฉํ•˜๊ณ  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ๋นŒ๋“œ/ํ†ต๊ณผํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋งž์Šต๋‹ˆ๊นŒ? ์ด ์ปค๋ฐ‹ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋งž์Šต๋‹ˆ๋‹ค. ์›น ๋ณ‘ํ•ฉ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž์‹ ์›๊ฒฉ ์ถ”๊ฐ€ leet3lite https://github.com/leet3lite/junit.git

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ง€์ ์—์„œ ์ „ํ™”ํ•˜์‹ญ์‹œ์˜ค.

git pull leet3lite ๋งˆ์Šคํ„ฐ

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

์•„ ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ปค๋ฐ‹์„ ๋ณ‘ํ•ฉํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. leet3lite์˜ ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์—๋Š” ์ด๋ฏธ ์ปค๋ฐ‹์ด ์žˆ์œผ๋ฉฐ ํ•ด๋‹น ์ž‘์—…์„ ์›๋ž˜ ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉํ•˜๋Š” ํ–‰์œ„๊ฐ€ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ถ„๊ธฐ์™€ HEAD ๊ฐ„์— ๋ณ‘ํ•ฉ ์ถฉ๋Œ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด ์šด๋™์˜ ์š”์ ์ธ ๊ฒƒ ๊ฐ™์•„์š”.

[neek junit (merge_pullreq_228)]$ git remote add leet3lite https://github.com/leet3lite/junit.git
[neek junit (merge_pullreq_228)]$ git pull leet3lite master
remote: Counting objects: 100, done.
remote: Compressing objects: 100% (39/39), done.
remote: Total 85 (delta 34), reused 77 (delta 26)
Unpacking objects: 100% (85/85), done.
From https://github.com/leet3lite/junit
 * branch            master     -> FETCH_HEAD
Auto-merging acknowledgements.txt
CONFLICT (content): Merge conflict in acknowledgements.txt
Auto-merging src/main/java/org/junit/Assert.java
Auto-merging src/test/java/org/junit/tests/AllTests.java
CONFLICT (content): Merge conflict in src/test/java/org/junit/tests/AllTests.java
Automatic merge failed; fix conflicts and then commit the result.
[neek junit (merge_pullreq_228|MERGING)]$ 

๊ทธ๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ธ๋‹ค๋ฉด, ๋‚˜๋Š” ๋‚ด์ผ ์ด๊ฒƒ์„ ๊ณ„์†ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ์ž์ •์ž…๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. acknowledgements.txt ๋ฐ AllTests.java๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ถ”๊ฐ€๋กœ ์ธํ•ด ๋งŽ์ด ์˜ํ–ฅ์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋ณ‘ํ•ฉ ์ž‘์—…์€ ๋‘ ๊ฒฝ๋กœ์— ์ถ”๊ฐ€๋œ ๋ชจ๋“  ํ–‰์„ ํฌํ•จํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”์ง„ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

2๋…„ ์ „์— ๊ณ ์ณ์ง„ ๊ฒƒ ๊ฐ™์•„์š”.

dsaff - No ...?

4.11์—๋Š” ์—†์Œ ;( ์ด ๊ธฐ๋Šฅ๋„ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

assertEquivalent() ์— ๋Œ€ํ•œ ๋…ผ์˜๋Š” #228๋กœ ์˜ฎ๊ฒจ์กŒ๊ณ , ๊ทธ ํ›„ #376์œผ๋กœ ์˜ฎ๊ฒจ์„œ ์ •๋ง๋กœ Hamcrest๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

@junit-team/junit-committers ๋‚ด๊ฐ€ ์ด๊ฒƒ์„ ๋‹ซ๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ์ด์˜๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚ด ์ชฝ์—์„œ ๋ฐ˜๋Œ€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ, Freudian ํด๋ฆญ. :-) ์—ฌ๊ธฐ์—๋Š” ์ด์˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๊ดœ์ฐฎ์•„. ๋‹ซ์Šต๋‹ˆ๋‹ค.

hamcrest matcher๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฝ”๋“œ:

   assertThat(product.getRating(), is(equalTo(new BigDecimal("2.3"))));

์ด ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

Expected: is <2.3>
     but: was <2.30000>

junit ๋˜๋Š” hamcrest๋Š” ์—ฌ์ „ํžˆ isNumericEquivalent ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

comparesEqualTo ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

์˜ˆ, comparesEqualTo ์‹ค์ œ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌ ํ•ด์š”.

์–ผ๋งˆ ์ „์— ๋งŒ๋“  ์น˜ํŠธ ์‹œํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
http://www.marcphilipp.de/blog/2013/01/02/hamcrest-quick-reference/

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