티스토리 뷰

Testable Code

- 테스트 커버리지 100% 가 목표가 아니라, 각 요구사항에 대해서 정확히 기능을 하는지 테스트 하는 것을 목표로 한다.

 

[너의 코드는]

- 어떻게 하면 Testable 한 테스트 코드를 작성할 수 있을까?

- 어떻게 테스트 가능한 코드를 작성할 수 있는지에 대한 발표이다.

- 모델 : 해당 레이어(계층)에서 사용하는 데이터를 표현하는 객체

 

 

 

 

- 커플링을 줄이기 위해서는?

 

결합도가 높은 형태
결합도가 낮은 형태

 

- 이렇게 커플링을 줄이면 도메인을 엔티티로 전환시키는 비용이 든다.

- 루즈한 커플링은 달성했지만 불필요한 작업이 생겼다.

- 간결함을 갈 것인가 VS 결합도를 낮출것인가?

 

케이스별로 나눈 것

 

케이스 1번 : 개발 불가 ㅋㅋㅋ

케이스 2번 : DDD 도메인을   JPA 모델이나 

케이스 3번 : DB에서 나는 원하는대로 데이터를 보내줄거야. 서비스 사용하는 것이 DTO

케이스 4번 : 허재코치님 선호. 도메인을 보호할 수 있는 객체. 도메인 먼저 작성하고 Unit 테스트 작성

도메인이 필요한 DB 엔티티를 구현. 

 

 

 

 

 

실질적인 구현은 컴포넌트에서 구현 및 조립. DB에 접근하기 전에 1개의 계층을 더 만들어준다.

 

 

- 커플링 패키지 : 도메인별로 패키지를 묶는것

 

- 트랜잭션은 작게 가져간다.

 

 

- 성공하는 케이스에 대한 검증보다는 실패하는 케이스를 더 중점적으로 한다.

 

search 함수가 비대해진다. 과연 검색결과 반환하는게 목적인지, 페이지 검색하는게 목적인지 등등

왜냐하면 테스트 케이스를 통과하기 위한 코드이기 때문이다. 그래서 이런 경우 리팩토링 필요.

 

리팩토링 후

- 테스트코드 작성시에 짧게 짧게 가져가는 것을 추천한다.

 

 

[이번 주차에 하게 될 것]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

댓글