Getter and Setter / Optional.ofNullable / Assertions / Extract Method μμ± / AfterEach / assertThrows
Table of contents
- ν΄λμ€ μΈμ€ν΄μ€ λ³μ μ λ ₯ λ° μΆλ ₯ λ©μλ ꡬννκΈ°
- Optional μ μ¬μ©νλ μ΄μ
- Test Case μμ±
- AfterEach
- Extract Method μμ±
- assertThrows
ν΄λμ€ μΈμ€ν΄μ€ λ³μ μ λ ₯ λ° μΆλ ₯ λ©μλ ꡬννκΈ°
μμ κ°μ Member
ν΄λμ€κ° μμ λ, κ° μΈμ€ν΄μ€ λ³μμ λ°μ΄ν° κ°μ μ μ₯νκ³ λ°ννλ get
κ³Ό set
λ©μλλ₯Ό ꡬννλ λ°©λ²μ λ§€μ° κ°λ¨νλ€.
μλμ° κΈ°μ€ μΈν
리 μ μ΄ λ¨μΆν€ ctrl + shift + n
μ μ
λ ₯νκ³ Action
λΆλΆμμ getter and setter
λ₯Ό κ²μνλ©΄ λλ€.
get, set λ©μλλ₯Ό μμ±ν λ³μλ₯Ό μ νν ν ok λ²νΌμ λλ₯΄λ©΄
μ΄μ κ°μ΄ μλμΌλ‘ μμ±λλ€!
Optional μ μ¬μ©νλ μ΄μ
λ¨Όμ , νμ κ΄λ¦¬λ₯Ό μν ν΄λμ€λ₯Ό κ΄λ¦¬νκΈ° μν λ©μλλ€μ΄ μλ μΈν°νμ΄μ€λ₯Ό μμ±νλ€.
findById()
μ findByName()
λ©μλλ Optional<Member>
λ‘ λ°νμ΄ λκ²λ μμ±μ΄ λμ΄μλ€.
Optional<T>
λ μ§λ€λ¦ ν΄λμ€λ‘ βT νμ
μ κ°μ²΄βλ₯Ό κ°μΈλ λνΌ ν΄λμ€μ΄λ€.
Optional
νμ
μ κ°μ²΄μλ λͺ¨λ νμ
μ μ°Έμ‘°λ³μλ₯Ό λ΄μ μ μλ€.
μ΄λ κ² νλ©΄, μ΅μ’
μ°μ°μ κ²°κ³Όλ₯Ό Optional
κ°μ²΄μ λ΄μμ λ°νμ νλλ°, μ΄μ²λΌ κ°μ²΄μ λ΄μμ λ°νμ νλ©΄ λ°νλ κ²°κ³Όκ° nullμΈμ§ λ§€λ² ifλ¬ΈμΌλ‘ 체ν¬νλ λμ
Optional
μ μ μλ λ©μλλ₯Ό ν΅ν΄μ κ°λ¨ν μ²λ¦¬ν μ μμ΄ μλ¬κ° λ°μνμ§ μλ κ°κ²°νκ³ μμ ν μ½λλ₯Ό μμ±ν μ μλ€.
μ¦, κ°μ μ μΌλ‘ Null
μ λ€λ£° μ μλ€.
ꡬνλΆλ₯Ό μ΄ν΄λ³΄μ.
λ°νν λ, κ·Έλ₯ return store.get(id);
μλ€λ©΄ null κ°μ΄ λ°νλμμ λ μλ¬κ° λ°μν μ μλ€.
νμ§λ§, μ μ½λμ κ°μ΄ Optional<Member>
λ‘ λ°νλλ κ²½μ°μλ μλ¬κ° λ°μνμ§ μλλ€.
Optional.ofNullable()
λ©μλλ₯Ό νμ©ν΄μΌνλ€.
findById
λ id
λ₯Ό ν΅ν΄μ Member
κ°μ²΄λ₯Ό κΊΌλ΄μ€λ λ©μλμ΄κ³ store
μ κ²½μ° id
κ° ν€κ°μΌλ‘ μ§μ λμ΄μμΌλ―λ‘
store.get(id)
λ₯Ό ν΅ν΄μ ν΄λΉ id
μ μνλ member
κ°μ²΄λ₯Ό λΆλ¬μ€κ³ μ΄λ₯Ό Optional.ofNullable
λ‘ κ°μΈμ£Όλ©΄ λλ€!
findByName
μ κ²½μ° μ½κ°μ 볡μ‘νλ€.
λ¨Όμ store.values()
λ₯Ό ν΅ν΄ store
μ μ μ₯λ λͺ¨λ member
κ°μ²΄λ₯Ό λΆλ¬μ¨λ€.
κ·Έ λ€μ, filter()
λ©μλλ₯Ό μ°κΈ° μν΄μ .stream()
μ λΆμ¬μ€λ€.
.filter(쑰건 λλ€μ)
μ ν΄λΉ 쑰건μ λ§μ‘±νμ§ μλ κ²λ€μ κ±Έλ¬μ€λ€.
.filter(member -> member.getName().equals(name))
μ ν΅ν΄μ store
μ μ μ₯λ member
μ name
λ€ μ€ μ
λ ₯ν nameκ³Ό κ°μ memberλ§ λ¨κ²λλ€.
.findAny()
λ stream
μ ν΅ν΄ κ±Έλ¬μ§ κ°μ μ무거λ λ°ννλλ°, μμ κ°μ κ²½μ° μ€λ³΅λ μ΄λ¦μ΄ μλ€κ³ κ°μ λμ΄ μμΌλ―λ‘, μ
λ ₯ν name
μ κ°μ§ member
κ° μλ€λ©΄ λ°νν κ²μ΄λ€.
Test Case μμ±
μλμ° μΈν 리 μ μ΄μ κ²½μ°
ν
μ€νΈ μΌμ΄μ€λ₯Ό μμ±νκ³ μΆμ classμ μ΄λ¦μ ν΄λ¦ν ν ctrl + shift + t
λ₯Ό μ
λ ₯νλ©΄ μ½κ² test μμ€νμΌμ μμ±ν μ μλ€.
create New Test λ₯Ό ν΄λ¦νλ©΄ λλ€.
κ·Έλ¦¬κ³ ν μ€νΈλ₯Ό ν΄λ³Ό λ©μλλ₯Ό μ νν ν ok λ²νΌμ λλ₯΄λ©΄ μμ€νμΌμ΄ μμ±λλ€.
ν
μ€νΈ νμΌ μμ± μ Assertions
λ₯Ό λ§μ΄ μ¬μ©νκ² λλ€.
Assertions
μ μ μ©ν λ©μλλ₯Ό μ¬μ©νλ €λ©΄ import μμΌμΌ νλλ°, junit
μ΄ μλ assertj
λ₯Ό importν΄μΌνλ€!
Member result = repository.findById(member.getId()).get();
μμ λ§μ§λ§μ get()
μ΄ λΆλ μ΄μ λ, findById
μ λ°νκ°μ΄ optional
λ‘ κ°μΈμ Έ μκΈ° λλ¬Έμ, get()
λ©μλλ₯Ό ν΅ν΄ κ°μ²΄λ§ κΊΌλΌ μ μλ€.
Assertions.assertThat(κ°μ²΄1).isEqualTo(κ°μ²΄2);
μ ν΅ν΄μ κ°μ²΄ 1κ³Ό κ°μ²΄ 2 κ° κ°μμ§ νμΈν μ μλ€.
AfterEach
ν μ€νΈλ₯Ό νλ κ³Όμ μμ μ¬λ¬ λ©μλλ₯Ό νλ²μ ν μ€νΈ νλ€λ³΄λ©΄, λ°μ΄ν°κ° κ²Ήμ³μ λ€λ₯Έ λ©μλ ν μ€νΈμ μν₯μ μ€ μ μλ€. κ·Έλ¬λ―λ‘ ν μ€νΈ λ©μλκ° λλ λλ§λ€ λ©λͺ¨λ¦¬λ₯Ό λΉμμ£Όλ κ²μ΄ μ€μνλ€.
μ΄ μν μ ν μ μλ μλν
μ΄μ
μ΄ @AfterEach
μ΄λ€.
clearStrore()
λ©μλ μμλ κ°λ¨νκ² μ»¬λμ
λ΄ λ°μ΄ν°λ₯Ό λͺ¨λ μ§μμ£Όλ store.clear();
λ₯Ό ꡬννλ©΄ λλ€.
Extract Method μμ±
.ifPresent()
λ₯Ό ν΅ν΄μ λ§μ½ μ μ₯νλ €λ member
μ name
κ°μ΄ μ΄λ―Έ μ‘΄μ¬νλ member
κ° repository
μ μ΄λ―Έ μ‘΄μ¬νλ€λ©΄,
IllegalStateException
μ΄λΌλ μλ¬λ₯Ό μΌμΌν€κ³ βμ΄λ―Έ μ‘΄μ¬νλ νμμ
λλ€.β λΌλ μλ¬λ©μΈμ§λ₯Ό λμ°κ²λ ꡬννμλ€.
λν, μ μ½λμμ μ€λ³΅νμμ κ°μ μ΄ μλλλ‘ νλ λΆλΆμ λ©μλλ‘μ¨ λ°λ‘ μΆμΆνλ λ¨μΆν€κ° μλ€.
ν΄λΉ λΆλΆμ λλκ·Ένκ³ , μλμ° κΈ°μ€ ctrl + alt + shift + t
λ₯Ό λμμ λλ₯΄λ©΄ μμ κ°μ μ°½μ΄ λμ€κ³
Extract Methodλ₯Ό ν΄λ¦νκ³ λ©μλ μ΄λ¦μ μ§μ ν΄μ£Όλ©΄ λλ€.
νΈνκ² λ©μλλ‘μ μΆμΆν΄λ΄μλ€.
assertThrows
μ΄μ μ, μ€λ³΅λ νμμ΄ μλ€λ©΄, IllegalStateException
μλ¬λ₯Ό μΌμΌν€κ³ βμ΄λ―Έ μ‘΄μ¬νλ νμμ
λλ€.β λΌλ μλ¬λ©μΈμ§λ₯Ό λμ°κ²λ ꡬννμλ€.
assertThrows
λ₯Ό μ¬μ©νλ©΄ try-catch λ¬Έμ μν μ κ°κ²°νκ² ν μ μλ€.
λ¨Όμ IllegalStateException e = assertThrows(IllegalStateException .class, () -> memberService.join(member2))
λ₯Ό μ΄ν΄λ³΄μ.
member1
κ³Ό member2
μ μ΄λ¦μ λμΌνκ³ member1
μ μ΄λ―Έ λ±λ‘μ΄ λμ΄μλ μν©μ΄λ€.
assertThrows(μλ¬,쑰건μ)
μ 쑰건μμ΄ μ€νλμμ λ μλ¬κ° λ°μνλμ§ νμΈν΄μ€λ€.
μ¦, μμ κ²½μ°μλ ()-> memberService.join(member2)
λλ€μμ΄ μ€νλμμλ
IllegalStateException
μλ¬κ° λ°μνλμ§ νμΈν΄μ€λ€.
μλ¬λ e
μ μ μ₯μ΄ λκ³ getMessage()
λ₯Ό ν΅ν΄ μλ¬λ©μΈμ§λ₯Ό μΆμΆν μ μκ³
μ΄λ₯Ό ν΅ν΄μ μ€λ³΅λ νμμ΄ κ°μ μ μλν κ²½μ°, μλ¬κ° λ°μνλμ§ μνλμ§ νμΈμ ν μ μλ€.