Mockito λ?
- μλ°μμ λ¨μ ν μ€νΈλ₯Ό μν Mocking framework
- tastes really good(?!)
- (κ°μΈμ μΌλ‘ ) κ°νΈνκ² μ¬μ©ν μ μμ΄μ ν μ€νΈμ½λ μμ±ν λ μ¦κ²¨ μ¬μ©νλ νΈμ λλ€.
1. μμ‘΄μ± μΆκ°
|
|
- λ²μ μ λν΄
- mockito μ λ²μ μ 1.x, 2.x, 3.x λ‘ μ΄ 3κ°κ° μμ΅λλ€. 곡μ wiki μ λ°λ₯΄λ©΄ 1κ³Ό 2λ λ§μ§ μλ(Incompatible) κ²λ μλ€κ³ ν©λλ€. 2μ 3μ API λ‘λ λ³κ²½λ κ²μ΄ μμΌλ, Java8 μ λ§μΆ°μ‘λ€κ³ ν©λλ€.
2. μ¬μ© λ°©λ²
2-1. verify
|
|
- μμ±λλ©΄ mock μ λͺ¨λ μνΈμμ©μ κΈ°μ΅ν©λλ€. μ΄λ€ λ©μλκ° μ€νλμλμ§
verify
λ‘ κ²μ¦ν μ μμΌλ©°, κ²μ¦μλ μμλ₯Ό λ°μ§μ§ μλ κ²μ νμΈν μ μμ΅λλ€.
2-2. stubbing
|
|
-
stub λΌλ λ¨μ΄λ νκΈλ‘ ν΄μνλ©΄
그루ν°κΈ°
λΌλ λ»μΈλ°, λͺ¨λ₯΄κ² μΆμ΄ κ΄λ ¨λ΄μ©μ wiki μμ μ°Ύμ보면 Test Stub μ΄ μλλ°μ. λ΄μ©μ 보면Test stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what's programmed in for the test.
μ¬κΈ°μ λμ€λ canned answer μ΄λΌλ 건
μ ν΄μ§ λ΅
μΌλ‘ stubbing μ΄λ μ ν΄μ§ μλ΅μ μ£Όλλ‘ νλ κ²μ΄λΌ λ³Ό μ μκ² μ΅λλ€.(μκΌ¬μΉκΈ°?)2-3. Argument matchers
|
|
- stubbing μ ν λ μ λ ₯ νλΌλ―Έν° μΈμλ₯Ό μ μ°νκ² νκ³ μΆμ λ μ¬μ©ν©λλ€.
- argument matchers μ anyX() λ©μλλ€μ ν μ€νΈλ₯Ό νΈνκ² λμμ£ΌκΈ΄ νμ§λ§, κ²½ν¨μ Int νλΌλ―Έν°κ° νμν μ리μ any() λ₯Ό μ°λ©΄ μλ¬κ° λ¬λ κ±Έλ‘ κΈ°μ΅ν©λλ€. (μ λ€λ¦μΈμ€ μμλλ° λ§μ΄μ£ .)
- arugment matcherλ₯Ό μ¬μ©νλ €λ©΄ λͺ¨λ νλΌλ―Έν°λ matcher λ‘ μ λ¬λμ΄μΌ ν©λλ€. μ¦, String λ¬Έμμ΄μ λ£μ λ
eq()
λ‘ κ°μΈμ£Όμ΄μΌ ν©λλ€.
|
|
2-4. νΈμΆ μ¬λΆμ λν κ²μ¦
|
|
- λ©μλ νΈμΆ νμμ νΈμΆ μ¬λΆλ₯Ό νμΈν μ μμ΅λλ€. times(1) μ κ²½μ°λ default μ΄λ―λ‘ μλ΅ κ°λ₯ν©λλ€.
2-5. void method with exception
|
|
- void λ©μλμμ exception μ λμ§ λ μ¬μ©ν©λλ€.
2-6. μμ κ²μ¦νκΈ°
|
|
- mock λ€μ΄ μμλλ‘ μ€νλλμ§ κ²μ¦νλ λ°©μμ λλ€.
- inOrder μ λ€μ΄κ°λ μμλ μκ΄μλ€μ. verify λ₯Ό ν΅ν΄ μμλλ‘ μ€νλλμ§ νμΈν μ μμ΅λλ€.
2-7. μ°μμ μΈ μ½ stubbing
|
|
- ν΄λΉ λ©μλλ₯Ό νΈμΆν λλ§λ€ λ€λ₯Έ return κ°μ 보μ¬μ£ΌκΈ° μν΄ μ¬μ©ν©λλ€.
- μ΄λ° κ²½μ°λ κ±°μ μλ€κ³ νμ§λ§, μμλλ κ²λ λμμ§ μμ κ² κ°λ€μ.
2-8. μ€μ κ°μ²΄ κ°μνκΈ°
|
|
- real κ°μ²΄μ λν΄ κ°μν μ μλ€κ³ ν©λλ€. method κ° stub λμ§ μμμ κ²½μ° μ€μ method κ° νΈμΆμ΄ λ©λλ€. μμ κ²½μ°μμλ size() μ λν΄μλ§ stub μ νμ΅λλ€. μμ£Ό μ¬μ©νμ§ μμμ κ·Έλ°μ§ μμλ¬μ ν©λλ€.
- “partial mocking” μ΄λΌλ κ°λ κ³Ό μ°κ΄λμ΄ μλ€κ³ ν©λλ€.
|
|
- λΆλΆλ§ mocking νλ€λ 건 μ΄λ° λ¬Έμ μ μ΄ λ°μν μ μκΈ°μ μ μ¨μΌ ν κ² κ°λ€μ.
2-9. stubbing λμ§ μμ λ©μλμ κΈ°λ³Έ 리ν΄κ° μ€μ
|
|
- stub λμ§ μμ method λ₯Ό νΈμΆν λ 리ν΄λλ κ°μ μ ν΄μ€ μ μμ΅λλ€.
- μ’μ ν μ€νΈλ₯Ό μν΄ κΌ νμν κΈ°λ₯μ μλμ§λ§, λ κ±°μ μμ€ν μλ μ μ©νκ² μ¬μ©λ μ μλ€κ³ ν©λλ€..λ§, μ΄λμ μ¬μ©ν μ§ λ± νκ³ λλμ΄ μ€μ§ μλ€μ.
2-10. Aliases for Behavior Driven Development
|
|
- BDD μ€νμΌμ ν μ€νΈ μμ± λ°©λ²μ ν μ€νΈ method μ κΈ°λ³ΈμΌλ‘ //given, //when, //then μ΄λΌκ³ μ£Όμμ λ¬μμ£Όλ κ²μ΄λΌ ν©λλ€. (μ λ λͺ¨λ₯΄κ² BDD λ°©μμ μ¬μ©ν΄ ν μ€νΈ μ½λλ₯Ό μμ±νκ³ μμλ€μ.)
- BDDMockito.given(Object) λ₯Ό μ κ³΅ν΄ BDD μ€νμΌμ ν μ€νΈλ₯Ό λ§λ€ μ μλ€κ³ ν©λλ€.