Junit4: assertTrue()/assertFalse()λŠ” 기본적으둜 였λ₯˜ λ©”μ‹œμ§€λ₯Ό 포함해야 ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2014λ…„ 11μ›” 10일  Β·  16μ½”λ©˜νŠΈ  Β·  좜처: junit-team/junit4

assertTrue(falseMethod())λŠ” λ‹€μŒμ„ μ œκ³΅ν•©λ‹ˆλ‹€.
junit.framework.AssertionFailedError
assertEquals(true, falseMethod())λŠ” λ‹€μŒμ„ μ œκ³΅ν•©λ‹ˆλ‹€.
junit.framework.AssertionFailedError: μ˜ˆμƒ:ν•˜μ§€λ§Œ:

assertTrue(boolean)/assertFalse(boolean)에 λŒ€ν•œ κΈ°λ³Έ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

κ°€μž₯ μ‰¬μš΄ 일은 assertEquals(true, condition) 등을 ν˜ΈμΆœν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

assertTrue 및 assertFalse λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

assertTrue("The user is not happy, but she should.", user.isHappy());
assertFalse("The user is sad, but she should not.", user.isSad());

이 λ©”μ‹œμ§€λŠ” μŠ€νƒ 좔적에 ν‘œμ‹œλ©λ‹ˆλ‹€.

java.lang.AssertionError: The user is not happy, but she should.
java.lang.AssertionError: The user is sad, but she should not.

λͺ¨λ“  16 λŒ“κΈ€

μ΄λŸ¬ν•œ κΈ°λ³Έ 였λ₯˜ λ©”μ‹œμ§€κ°€ 도움이 λ κΉŒμš”? μ–΄μ¨Œλ“  무엇이 잘λͺ»λ˜μ—ˆλŠ”지 μ•Œμ•„λ‚΄λ €λ©΄ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μ‚΄νŽ΄λ΄μ•Ό ν•˜μ§€ μ•Šμ„κΉŒμš”?

BTW μ‚¬μš©ν•˜μ‹­μ‹œμ˜€ org.junit.Assert λŒ€μ‹  junit.framework.Assert .

이 ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•œλ‹€κ³  κ°€μ •ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

μ‚¬μš©μž μ‚¬μš©μž = ...;
assertTrue(user.isHappy());
assertFalse(user.isSad());

ν…ŒμŠ€νŠΈλŠ” λ©”μ‹œμ§€ 없이 AssertionError와 ν•¨κ»˜ μ‹€νŒ¨ν•©λ‹ˆλ‹€. μ½”λ“œλ₯Ό κ²€μ‚¬ν•˜κ³  μ–΄λ–€ μ£Όμž₯이 μ‹€νŒ¨ν•œ 쀄 번호λ₯Ό κ²€μ‚¬ν•˜μ§€ μ•Šκ³ λŠ” μ•Œ 수 μžˆλŠ” 방법이 μ—†μŠ΅λ‹ˆλ‹€.

더 λ§Žμ€ 데이터가 λ‚˜μœ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

더 λ§Žμ€ 데이터가 λ‚˜μœ 것은 μ•„λ‹™λ‹ˆλ‹€. 이 κ²½μš°μ—λŠ” 더 λ§Žμ€ λ°μ΄ν„°λ§Œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ 이 κΈ°λŠ₯ μš”μ²­μ— λ°˜λŒ€ν•˜λŠ” 것은 μ•„λ‹ˆμ§€λ§Œ, Hamcrest λ˜λŠ” Truth와 같이 μ˜€λŠ˜λ‚  μ£Όμž₯을 κ³΅μ‹ν™”ν•˜λŠ” 더 λ‚˜μ€ 방법이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  λˆ„κ΅°κ°€κ°€ 이 λ¬Έμ œμ— λŒ€ν•œ pull μš”μ²­μ„ μ œμΆœν•˜λ©΄ μ•„λ§ˆλ„ 병합할 것이라고 μƒκ°ν•©λ‹ˆλ‹€... ;-)

@junit-team/junit-committers μ΄μ˜κ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λ‚˜λŠ” ν™•μ‹€νžˆ 그것에 λ™μ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ :-)
https://github.com/google/truth/commits?author=kluever

ν•˜μ§€λ§Œ 이 λ•Œλ¬Έμ— assertTrue/assertFalse μ‚¬μš©μ„ κΊΌλ¦¬λŠ” Google 직원이 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ ν™•μ‹€νžˆ, 이에 λŒ€ν•œ ν’€ λ¦¬ν€˜μŠ€νŠΈλ₯Ό λ³΄λ‚΄κ² μŠ΅λ‹ˆλ‹€.

:웃닀:

assertTrue 및 assertFalse λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

assertTrue("The user is not happy, but she should.", user.isHappy());
assertFalse("The user is sad, but she should not.", user.isSad());

이 λ©”μ‹œμ§€λŠ” μŠ€νƒ 좔적에 ν‘œμ‹œλ©λ‹ˆλ‹€.

java.lang.AssertionError: The user is not happy, but she should.
java.lang.AssertionError: The user is sad, but she should not.

@stefanbirkner λ„€, 저도 잘 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ κΈ°λ³Έ κ²½μš°μ—λ„ 합리적인 였λ₯˜ λ©”μ‹œμ§€λ₯Ό ν‘œμ‹œν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

μš°λ¦¬λŠ” 이미 assertEquals(expected, real)에 λŒ€ν•΄ 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ©΄ λ‹€μŒκ³Ό 같이 μž‘μ„±ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.
assertEquals("μ˜ˆμƒ " + μ˜ˆμƒ +" ν•˜μ§€λ§Œ " + μ‹€μ œ, μ˜ˆμƒ, μ‹€μ œ);

assertTrue()의 μ‹€νŒ¨μ— λŒ€ν•œ 더 λ‚˜μ€ λ©”μ‹œμ§€κ°€ μœ μš©ν•  수 μžˆλ‹€λŠ” 데 λ™μ˜ν•˜μ§€λ§Œ "expected <true> but was <false>" κ°€ 더 λ‚˜μ€μ§€ ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

@dsaff λŠ” 역사적 λ§₯락이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

문제의 λ²”μœ„λ₯Ό λͺ…ν™•νžˆ ν•˜κΈ° μœ„ν•΄ "μ˜ˆμƒν•˜μ§€λ§Œ"κ°€ μ‹€μ œ μΆ”κ°€ 정보λ₯Ό μ „λ‹¬ν•˜κΈ° λ•Œλ¬Έμ΄ μ•„λ‹ˆλΌ 일뢀 λ©”μ‹œμ§€μ— λŒ€ν•œ 문체적 μ„ ν˜Έ λ•Œλ¬Έμ— '훨씬 더' 쒋지 μ•ŠμŠ΅λ‹ˆκΉŒ?

μ›λž˜ λ””μžμΈ 생각은 였λ₯˜ λ©”μ‹œμ§€λ₯Ό κ΅¬μ„±ν•˜λŠ” 것이 λ‹Ήλ©΄ν•œ λ¬Έμ œμ—μ„œ 인지적 주의λ₯Ό μ‚°λ§Œν•˜κ²Œ ν•˜λŠ” κ²ƒμ΄λΌλŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€. assertTrue(list.isEmpty())라고 ν•˜λ©΄ boolean κ°„μ˜ 비ꡐ ν…ŒμŠ€νŠΈκ°€ μ•„λ‹ˆλΌ list의 μƒνƒœλ₯Ό μƒκ°ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ JUnit은 말할 것도 μ—†κ³  아무 말도 ν•˜μ§€ μ•Šμ•„μ•Ό ν•©λ‹ˆλ‹€.

그것이 Chesterton의 μšΈνƒ€λ¦¬ 뒀에 μžˆλŠ” μ΄μœ μž…λ‹ˆλ‹€.

μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 이 κ²½μš°μ—λŠ” μ—¬μ „νžˆ ν₯미둜운 데이터가 μ—†μŠ΅λ‹ˆλ‹€.

assertTrue(user.isHappy());
assertFalse(user.isSad());

assertEquals에 더 λ§Žμ€ 정보λ₯Ό μ œκ³΅ν•˜λŠ” 였λ₯˜ λ©”μ‹œμ§€κ°€ μžˆλŠ” μ΄μœ λŠ” 더 λ§Žμ€ 정보λ₯Ό μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 즉, μ‹€μ œ κ°’κ³Ό μ˜ˆμƒ 값이 _are_이며 λŸ°νƒ€μž„κΉŒμ§€ μ’…μ’… μ•Œλ €μ§€μ§€ μ•ŠκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

JUnit은 많이 μ‚¬μš©λ˜λŠ” 라이브러리이며, 이와 같은 μ‚¬μ†Œν•œ 변경쑰차도 핡심 λ©”μ†Œλ“œμ— μ μš©ν•  λ•Œ JUnit의 ν˜„μž¬ λ™μž‘μ— μ˜μ‘΄ν•˜λŠ” λˆ„κ΅°κ°€μ˜ ν…ŒμŠ€νŠΈλ₯Ό μ–΄λ”˜κ°€μ—μ„œ μ€‘λ‹¨μ‹œν‚€λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” μƒˆλ‘œμš΄ 행동이 μœ μš©ν•œ λ°©μ‹μœΌλ‘œ λ‹€λ₯΄λ‹€λ©΄ κ·Έλ ‡κ²Œ ν•˜λŠ” 것이 μ’‹μ§€λ§Œ μ§€κΈˆκΉŒμ§€μ˜ λ…Όκ±°λ‘œλŠ” μœ μš©μ„±μ— λŒ€ν•΄ ν™•μ‹ ν•˜μ§€ λͺ»ν•œλ‹€.

ν˜„μž¬ μƒνƒœμ˜ κ²°κ³ΌλŠ” 합리적이고 지λŠ₯ 개발자의 μˆ˜λŠ” 항상 μž‘μ„±μ˜ 개인 μ—°μŠ΅μ„ν•΄μ•Όν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€ assertEquals(true, expression()) λŒ€μ‹  assertTrue(expression()) . κ²Œλ‹€κ°€, λ¬Όλ‘  λ¦¬λ·°μ–΄λ“€μ—κ²Œ λ˜‘κ°™μ΄ ν•˜λΌκ³  μš”κ΅¬ν•˜κ³  μŠ€νƒ€μΌ κ°€μ΄λ“œμ— λ„£λŠ” λ“±μž…λ‹ˆλ‹€. μš°λ¦¬κ°€ μ½”λ“œ λ‹¨μˆœμ„±μ„ μ’‹μ•„ν•˜κΈ° λ•Œλ¬Έμ— μŠ¬ν”„μ§€λ§Œ κ·Έ μˆ«μžκ°€ 맀우 λ†’λ‹€κ³  μ£Όμž₯ν•  μˆ˜λŠ” μ—†λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ‚˜λŠ” λ˜ν•œ David의 μ‹œμž‘ 질문(λ§ˆμ§€λ§‰ μ½”λ©˜νŠΈ)에 λŒ€ν•œ λŒ€λ‹΅μ΄ λΆ„λͺ…ν•œ "예"라고 μƒκ°ν•©λ‹ˆλ‹€. μ‹€μ œ 정보가 μ œκ³΅λ˜λŠ” μœ μΌν•œ κ²½μš°λŠ” ν…ŒμŠ€νŠΈ λ©”μ„œλ“œμ— μ •ν™•νžˆ ν•˜λ‚˜μ˜ λ©”μ‹œμ§€ μ—†λŠ” assertTrue 와 μ •ν™•νžˆ ν•˜λ‚˜μ˜ λ©”μ‹œμ§€ μ—†λŠ” assertFalse μž…λ‹ˆλ‹€. 그것은 맀우 μΌλ°˜μ μ΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그리고 _그리고_ μŠ€νƒ 좔적이 있고, _그리고_ 그듀이 λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν–ˆμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€... 그것은 많이 μΆ”κ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것이 λ„ˆλ¬΄ _맨발둜 λ‚˜νƒ€λ‚˜λŠ” λ©”μ‹œμ§€ μ—†λŠ” μ˜ˆμ™Έμ™€ 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€._

@junit-team/junit-committers 이 λ¬Έμ œμ— λŒ€ν•΄ μ–΄λ–»κ²Œ ν•΄μ•Ό ν•©λ‹ˆκΉŒ?

κΈ€μŽ„, λ‚˜λŠ” 그것을 λ‹«λŠ” 데 μ°¬μ„±ν•©λ‹ˆλ‹€. μΌ€λΉˆ, 컀트, λ‘˜ λ‹€ λ³€ν˜ΈμΈμ„ μ„ μž„ν•  만큼 μ—΄μ„±μ μž…λ‹ˆκΉŒ?

λ‚˜λŠ” 그것을 λ‹«λŠ” 것에 μ°¬μ„±ν•©λ‹ˆλ‹€.

μ €λŠ” 이 λ¬Έμ œμ— μ°¬μ„±ν•©λ‹ˆλ‹€. λ‹€λ₯Έ ν”„λ ˆμž„μ›Œν¬λŠ” μ‹€μ œ κ°€μΉ˜ κΈ°λŠ₯ ν‘œμ‹œλ₯Ό μ§€μ›ν•˜λ©° ν•„μˆ˜μ μž…λ‹ˆλ‹€. JUnit이 κ·Έλ ‡κ²Œ μœ΅ν†΅μ„±μ΄ μ—†λ‹€λŠ” 것이 믿기지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

assertTrue 및 assertFalse에 λŒ€ν•΄ 보닀 μœ μ΅ν•œ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό μ œκ³΅ν•˜λŠ” 것이 μ€‘μš”ν•˜κΈ° λ•Œλ¬Έμ— 이 λ¬Έμ œμ— μ°¬μ„±ν•©λ‹ˆλ‹€. 제 λ™λ£Œμ™€ μ €λŠ” 이 λ•Œλ¬Έμ— assertTrue/assertFalse μ‚¬μš©μ„ κΊΌλ¦½λ‹ˆλ‹€.

@ChaminW assertTrue("Some more specific message.", value); λ₯Ό μ‚¬μš©ν•˜λ©΄ 더 μœ μ΅ν•œ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰