ìŒ | ì | í | ì | 목 | êž | í |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- aws saa í©ê²©
- aws ì¿ í°
- íìŽíŒë°ìŽì
- ìë² í°ì§ë ë컀 ì¬ì€í
- Kafka
- redis í ì€ížìœë
- ì íšì€ ì€ìŒì€ë¬
- docker ps -a
- ì€ííë 믞ì€
- Entity
- docker
- s3 log ì ì¥
- docker-compose kafka
- Codedeploy ì€ë¥
- redis ì¡°í
- jvm ë°ë°ë¥ê¹ì§ íí€ì¹êž°
- íë¡ê·žëëšžì€ í©ì¹íììêž
- s3 ìŽë¯žì§ ì ì¥
- ì íšì€ ë¹ë ì€ë¥
- private subnet ec2 ë¡ì»¬ ì ì
- JPA
- ìë°
- s3 ìŽë¯žì§ ë€ìŽë¡ë
- íë¡ê·žëëšžì€
- AWS Certified Solutions Architect - Associate
- prod docker-compose
- íë¡ê·žëëšžì€ ì»¬ë¬ë§ë¶
- nGrinder
- ë€ì€ 컚í ìŽë
- docker compose
- Today
- Total
ðð¢ðð âððð ððð¡ðð ððððâ§
[Spring] TestCode, TDD, JUnit, assertJ 볞묞
[Spring] TestCode, TDD, JUnit, assertJ
ð€Ryusunð€ 2022. 12. 19. 15:00Test Code
ì í ëë ìë¹ì€ì íì§ì íìžíê³ ìíížìšìŽì ë²ê·žë¥Œ ì°Ÿìµëë€.
ìŠ, íšì, í¹ì í êž°ë¥, UI, ì±ë¥, APIì€íìŽ ììëë¡ ëìíëì§ íìžíë ê²ì
ëë€.
í ì€íž ìœëì ì¢ ë¥
- í ì€íž íŒëŒë¯žëë ëì ë²ìë ì±ê²©ì ë°ëŒ Unit test(ëšì í ì€íž), Integration test(íµí© í ì€íž), UI í ì€íž(E2E í ì€íž) 3ê°ì§ì í ì€ížë¡ ëëìŽì§ëë€.
- ê°ë°ìë¶ë€ìŽ íë¡ì ížë¥Œ ì§íí ë ê³µíµì ìŒë¡ ìì±íŽìŒ íë í ì€ížë€ì 몚ìëì ê²ìŽ í ì€íž íŒëŒë¯žëì ëë€.
1. Unit Test
- ëšì í ì€íž
- íšìë 몚ë íŽëì€ì ê°ì ëšìì êž°ë¥ì ëí ì íšì±ì ê²ìŠíë í ì€ížì ëë€.
- ì륌 ë€ìŽ ìëì°šì íìŽìŽë¥Œ íë í ì€ížíë ê²ì ëšì í ì€ížëŒ í©ëë€.
- ëšì í ì€ížë ë§€ì° ê°ëšíê³ ëª ííë©° ë¹ ë¥Žê² ì€íëë€ë í¹ì§ìŽ ììµëë€.
- ëí, ìê² ìªŒê°ì§ ëšì í ì€ížë íŽë¹ ë¡ì§ìŽ ìŽë€ ìí ì íëì§ ìœê² íì í ì ìë€.
- ëšì í ì€ížë¥Œ ì¬ì©íë©Ž System.outìŒë¡ íë ë²ê±°ë¡ìŽ ëë²ê¹ ìŽ íì ììµëë€.
2. Integration test
- íµí© í ì€íž
- íëì ëšìê° ìëëŒ ì¬ë¬ ê°ì§ì ìë¡ ë€ë¥ž 몚ë í¹ì íŽëì€ ê° ìížìì©ì ì íšì±ì ê²ì¬íë í ì€ížìŽë€.
- ìŽë¬í íµí© í ì€ížê° íìí ìŽì ë ê°ê° ëšì í ì€ížê° ê²ìŠëìë€ íëëŒë, 몚ë ê° ìží°íìŽì€ ë° ë°ìŽí° íëŠìŽ ìëí ëë¡ ìëíì§ ìë 겜ì°ë ìêž° ë묞ìŽë€.
- ì륌 ë€ìŽ, íìŽìŽì ìì§ ë± ë¶íë€ìŽ ìë¡ ìížìì©ì íë©Žì ìëìŽ ê±žëŠ¬ëì§ë¥Œ íìžíë íµí© í ì€ížì ëë€.
3. User interface Test(E2E Test)
- End-to-Endì ì€ìë§ë¡ ë곌 ëì í ì€íž
- ì€ì ì¬ì©ìë€ìŽ ì¬ì©íë íë©Žì ëí í ì€ížë¥Œ íì¬ ìë¹ì€ì êž°ë¥ìŽ ì ìì ìŒë¡ ìëíëì§ ê²ìŠíë í ì€ížì ëë€.
- ì륌 ë€ìŽ, íìŽìŽë ìì§ ë± ë¶ë¶ì ìž ìížìì©ìŽ ìëëŒ ìì 곌 ëžë ìŽí¬, ìì§ ë± ì°šê° ëìê°ëì§ ì 첎ì ìŒë¡ í ì€ížíë ê²ì ì믞í©ëë€.
- UI í ì€ížë ì€ì ì±ì ì¬ì©íë ì¬ì©ìì íëŠì ëíŽ í ì€íž íšìŒë¡ìš UI ë³ê²œ ì¬íìŒë¡ ë°ìí ì ìë 묞ì 륌 ì¬ì ì ì°šëšíšìŒë¡ìš ì 뢰ì±ì ëì ëë€.
- íì§ë§ í멎곌 ì§ì ì ìŒë¡ ì°êŽëìŽìë í ì€ížìŽë€ë³Žë ì€í ìê°ë ì€ë ê±žëŠ¬ê³ ëììžìŽ ë³ê²œë ëë§ë€ í ì€íž ìœëì ìì ìŽ íìí©ëë€.
- ê·žëì ì ì§ë³Žì ë¹ì©ë íœëë€.
í ì€íž ìœë ìì±ì ì¥ì
- ê°ë° 곌ì ì€ ììì¹ ëª»í 묞ì 륌 믞늬 ë°ê²¬í ì ìë€. (ìë¬ë¥Œ íŽëŒìŽìžížë³Žë€ 빚늬 ë°ê²¬í ì ìë€.)
- ìì±í ìœëê° ìëí ëë¡ ìëíëì§ ê²ìŠí ì ìë€.
- ìœë 늬íí ë§ì ì ì°íê³ ìì ì ìž ëìì í ì ìê² íŽ ì€ë€.
- ìœëì 몚ëí륌 í ë² ë ê³ ë¯Œíê² íŽ ì€ë€.
- ìœë ë³ê²œ ì, ë³ê²œ ë¶ë¶ìŒë¡ ìží ìí¥ë륌 ìœê² íì í ì ìë€.
- í ì€íž ìœë륌 íµíŽ ëìíë ë°©ì ë° ê²°ê³Œ íìžìŽ ê°ë¥íë€.
TDD (Test Driven Development)
- í ì€íž 죌ë ê°ë°
- í ì€ížë¥Œ 뚌ì ì§ê³ í ì€ížë¥Œ íµê³Œí ë§íŒì ìœë륌 ì¶ê°íë ëšê³ë¥Œ ë°ë³µíì¬ êµ¬ííë€.
- ì€íšíë í ì€ížë¥Œ 뚌ì ìì±íê³ ê·žì íŽë¹íë êž°ë¥ì ë§ë€ìŽëê°ë ë°©ììŽë€.
- ìŽíì 늬í©í°ë§ìŒë¡ íšìšì± í¥ìíë€.
TDD ê°ë° íë¡ìžì€
- { Red } ëšê³ììë ì€íšíë í ì€íž ìœë륌 뚌ì ìì±í©ëë€.
- { Green } ëšê³ììë í ì€íž ìœë륌 ì±ê³µìí€êž° ìí ì€ì ìœë륌 ìì±í©ëë€.
- { Yellow } ëšê³ììë ì€ë³µ ìœë ì ê±°, ìŒë°í ë±ì 늬í©í°ë§ì ìíí©ëë€.
ìŽë ê² ì€íšíë í ì€íž ìœë륌 뚌ì ìì±íê³ ê·žì íŽë¹íë êž°ë¥ì 구ííë ë°©ììŽ TDDìŽë€. ì€ìí ê²ì ì€íšíë í ì€íž ìœë륌 ìì±í ëê¹ì§ ì€ì ìœë륌 ìì±íì§ ìë ê²ê³Œ, ì€íšíë í ì€ížë¥Œ íµê³Œí ì ëì ìµì ì€ì ìœë륌 ìì±íŽìŒ íë ê²ì ëë€.
TDDì ì¥ì
- 몚ë ì구ì¬í, 목íì ëíŽì ì ê²í ì ìê³ , ì¬ì©ì ì
ì¥ìì ìœë륌 ìì±í ì ìë€.
(ìì€í ì ë°ì ìž ì€ê³ í¥ì) - 구í볎ë€ë ìží°íìŽì€ì ì§ì€íŽì ìœë륌 구ííšìŒë¡ìš ìœëì í늬í°ë í¥ìëê³ ìì€í ì ë°ì ìž ì€ê³ë¥Œ í¥ìíë€.
- ìì°ì€ëœê² í ì€íž íµê³ŒìšìŽ ëìì§ë€.
- ì€ë² ìì§ëìŽë§ ë°©ì§
- ì€ê³ì ëí íŒëë°±ì ë¹ ë¥Žë€.
ìŒë° ê°ë° ë°©ì곌 TDD ê°ë° ë°©ìì ì°šìŽì
ìŒë° ê°ë° ë°©ì
ë³Žíµ ê°ë° ë°©ìì ‘ì구ì¬í ë¶ì → ì€ê³ → ê°ë° → í ì€íž → ë°°í¬’ì ííì ê°ë° 죌Ʞ륌 ê°ìµëë€.
ìŒë° ê°ë° ë°©ìì 묞ì ì
- ìíížìšìŽ ê°ë°ì ëëŠ¬ê² íë ì ì¬ì ìíìŽ ì¡Žì¬íë€.
- ìë¹ìì ì구ì¬íìŽ ì²ìë¶í° ëª ííì§ ìì ì ìë€.
- ë°ëŒì ì²ìë¶í° ì벜í ì€ê³ë ìŽë µë€.
- ì첎 ë²ê·ž ê²ì¶ ë¥ë ¥ ì í ëë ìì€ìœëì íì§ìŽ ì íë ì ìë€.
- ì첎 í ì€íž ë¹ì©ìŽ ìŠê°í ì ìë€.
ìŽë¬í 묞ì ì ìŽ ë°ìëë ìŽì ë ìŽë íë¡ì ížë ìŽêž° ì€ê³ê° ì벜íì§ ìì ì¬ì€ê³ë¡ ìžíŽ ê°ë°ìë ìœë륌 ìœì , ìì , ìì íë 곌ì ìì ë¶íìí ìœëê° ëšê±°ë ì€ë³µë ê°ë¥ì±ìŽ íœëë€.
ê·žëì ìŒë° ê°ë° ë°©ìì ê³ ê°ì ì구ì¬í ëë ëììžì ì€ë¥ ë± ë§ì ìžë¶ ëë ëŽë¶ 조걎ì ìíŽ ì¬ì€ê³íì¬ ì ì§ì ìŒë¡ ì벜í ì€ê³ë¡ ëìê°ëë°, ê²°ë¡ ì ìŒë¡ ìŽë¬í ìœëë€ì ì¬ì¬ì©ìŽ ìŽë µê³ êŽëŠ¬ê° ìŽë €ìì ì ì§ë³Žì륌 ìŽë µê² ë§ëëë€.
ìì ë¶ë¶ì êž°ë¥ ìì ìë 몚ë ë¶ë¶ì í ì€ížíŽìŒ íë¯ë¡ ì 첎ì ìž ë²ê·žë¥Œ ê²ì¶íêž° ìŽë €ìì ž ì첎 ë²ê·ž ê²ì¶ ë¥ë ¥ìŽ ì íë©ëë€. ë°ëŒì ìì ìì ìë 몚ë êž°ë¥ì ë€ì í ì€ížíŽìŒ íë 묞ì ê° ë°ìíì¬ ì첎 í ì€íž ë¹ì©ìŽ ìŠê°ë©ëë€.
TDD ê°ë° ë°©ì
TDDì ìŒë°ì ìž ê°ë° ë°©ìì ê°ì¥ í° ì°šìŽì ì í ì€íž ìœë륌 ìì±í ë€ì ì€ì ìœë륌 ìì±íë€ë ê²ì ëë€.
ëììž(ì€ê³) ëšê³ìì íë¡ê·žëë° ëª©ì ì ë°ëì 믞늬 ì ìíŽìŒë§ íê³ ë 묎ìì í ì€ížíŽìŒ í ì§ ë¯žëŠ¬ ì ì(í ì€íž ìŒìŽì€ ìì±) íŽìŒ í©ëë€. í ì€íž ìœë륌 ìì±íë ëì€ ë°ìíë ììž ì¬í(ë²ê·ž ë° ìì ì¬í)ì í ì€íž ìŒìŽì€ì ì¶ê°íê³ ì€ê³ë¥Œ ê°ì í©ëë€. ìŽí í ì€ížê° íµê³Œë ìœëë§ì ìœë ê°ë° ëšê³ìì ì€ì ìœëë¡ ìì±í©ëë€.
ìŽë¬í ë°ë³µì ìž ëšê³ê° ì§íëë©Žì ìì°ì€ëœê² ìœëì ë²ê·žê° ì€ìŽë€ê³ ìì€ìœëë ê°ê²°íŽì§ëë€. ëí í ì€íž ìŒìŽì€ ìì±ìŒë¡ ìžíŽ ìì°ì€ëœê² ì€ê³ê° ê°ì ëšìŒë¡ ì¬ì€ê³ ìê°ìŽ ì ê°ë©ëë€.
TDD ê°ë° ë°©ìì 묞ì ì
- ìì°ì± ì í
ì²ìë¶í° 2ê°ì ìœë륌 ì§ìŒíê³ ì€ê°ì€ê° í ì€ížë¥Œ íë©Žì ê³ ì³ëê°ìŒ íêž° ë묞ì ê°ë° ìëê° ëë €ì§ë€ê³ ìê°íë ì¬ëìŽ ë§ìµëë€. TDD ë°©ìì ê°ë° ìê°ì ìŒë°ì ìž ê°ë° ë°©ìì ë¹íŽ ëëµ 10~30% ì ëë¡ ëìŽë©ëë€.
ë°ëŒì SI íë¡ì ížììë ìíížìšìŽì íì§ë³Žë€ë ë©êž°ìŒ ì€ìê° íšì¬ ì€ìíêž° ë묞ì TDD ë°©ìì ì ì¬ì©íì§ ììµëë€.
í ì€íž ë구 (JUnit & assertJ)
JUnit
- ìë°ì© ëšìí ì€íž(Unit Test) ë구
JUnit í¹ì§
- @Test ë©ìëê° ížì¶í ë ë§ë€ ìë¡ìŽ ìžì€íŽì€ë¥Œ ìì±íì¬ ë 늜ì ìž í ì€ížê° ìŽë£šìŽì§ê² í©ëë€.
- ëšì (assert) ë©ìëë¡ í ì€íž ìŒìŽì€ì ìí 결곌륌 íë³í ì ììµë€. (ëšì ë©ìëë ìëì ì 늬)
- jUnit4ë¶í°ë ìŽë ží ìŽì ìŒë¡ ê°ê²°íê² í ì€ížë¥Œ ì§ìí©ëë€.(@Test @Before @After)
- 결곌ë ì±ê³µ(ë ¹ì), ì€íš(ë¶ìì) ì€ íëë¡ íìë©ëë€.
- í ì€íž 결곌륌 íìžíë ê² ìŽìž ìµì íë ìœë륌 ì ì¶íŽëŽë êž°ë¥ë ì ê³µí©ëë€.
assertë©ìë ì 늬
- assertArrayEquals(a, b) : ë°°ìŽ Aì Bê° ìŒì¹íšì íìžíë€.
- assertEquals(a, b) : ê°ì²Ž Aì Bê° ê°ì ê°ì ê°ì§ëì§ íìžíë€.
- assertEquals(a, b, c) : ê°ì²Ž Aì Bê° ê°ìŽ ìŒì¹íšì íìžíë€.( a: ììê°, b:결곌ê°, c: ì€ì°šë²ì)
- assertSame(a, b) : ê°ì²Ž Aì Bê° ê°ì ê°ì²Žìì íìžíë€.
- assertTrue(a): 조걎 Aê° ì°žìžì§ íìžíë€.
- assertNotNull(a) : ê°ì± Aê° nullìŽ ìëì íìžíë€.
org.junit.Assert.assertThat
org.junit.Assert.assertThatì Ʞ볞 ííë ìëì ê°ìµëë€.
public static <T> void assertThat(T actual, Matcher<? super T> matcher)
actual ìžìì ê²ìŠëì(ì€í ëšê³ì 결곌)ì ë£ê³ , ìŽì ë¹êµíë ë¡ì§(matcher)ì 죌ì ë°ì ê²ìŠ ëšê³ë¥Œ ìíí©ëë€.
ê°ë°ìê° matcher륌 ì§ì 구ííë ê²ì ë¹íšìšì ìŽê³ , 구íí matcherìì ì€ë¥ê° ë°ìí ìë ììµëë€.
matcherìì ì€ë¥ê° ë°ìíë©Ž í ì€ížê° ì€íšíëë°, ìžë¶ ììžì ìí¥ì ë°ë ê²ì ì¢ì í ì€ížëŒê³ í ì ììµëë€.
ê·žë° ìŽì ë묞ìžì§, JUnitì assertThatì hamcrestì 구íë matcher륌 ì¬ì©íëë¡ ê°ì íê³ ììµëë€.
AssertJ
- Java í ì€ížìì ì ì°œíê³ íë¶í assertions륌 ìì±íë ë° ì¬ì©ëë ì€í ìì€ ì»€ë®€ëí° êž°ë° ëŒìŽëžë¬ëŠ¬
- í ì€íž ìœë ìì± ì ê°ë ì±ìŽ ë°ìŽëê³ ììží ìë¬ ë©ìì§ë¥Œ ì ê³µíŽì£Œë ëŒìŽëžë¬ëŠ¬
org.assertj.core.api.Assertions.assertThat
public static AbstractAssert<SELF, T> assertThat(T actual)
assertjì assertThatì ìžìë¡ actual(ê²ìŠëì)ë§ ë°ìµëë€.
ê·žëŠ¬ê³ actualì íì ì ë°ëŒ AbstractAssertëŒë ì¶ì íŽëì€ë¥Œ ììí Assert íŽëì€ë¥Œ ë°íí©ëë€.
ê²°ë¡
AssertJì Junit Assertions ì€ ìŽë€ 걞 ìšìŒ íë
Assertionsë JunitìŽ êµ¬íí íŽëì€ë ìê³ , AssertJì Assertionsê° ììµëë€. ì£Œë¡ AssertJ륌 ì¬ì©í©ëë€. ê·ž ìŽì ë JUnit5.Assertionsë IDEê° ìë ìì±ë ì§ìíì§ ììŒë©° ë©ìë륌 ìžììŒ íë€ë ëšì ìŽ ììµëë€.
ë°ë©Ž assertJë junitìŽ ì ê³µíë assert ë³Žë€ ì¬ì©íêž° íží 묞ë²ì ì ê³µíë©°, íšìëª ìŽ ì§êŽì ìŽìŽì ê°ë ì±ë ì¢ìµëë€.
AssertJê³µì묞ì륌 볎멎 ë°êŸžë ë°©ë²ìŽ ëìš ìììì AssertJê° ë ëª íí©ëë€.
// Junit
assertEquals(expected, actual);
// to : AssertJ
assertThat(actual).isEqualTo(expected);
[ì°žì¡°]
1. https://hanamon.kr/tdd%EB%9E%80-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EB%8F%84-%EA%B0%9C%EB%B0%9C/
'ð£ð¿ðŒðŽð¿ð®ðºðºð¶ð»ðŽð» > ðð©ð«ð¢ð§ð ' 칎í ê³ ëŠ¬ì ë€ë¥ž êž
[Spring] DI (ì ìì±ì 죌ì ì ì¬ì©íŽìŒ íëê°?) (0) | 2022.12.27 |
---|---|
[Spring] JPA, ORM (0) | 2022.12.20 |
[Spring] AOP (2) | 2022.12.11 |
[Spring] Bean, Component (0) | 2022.12.09 |
[Spring] IoC (0) | 2022.12.09 |