inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter 중급 1편 - 클린 아키텍처

22 노트 모델 클래스, NoteRepository 작성

noteRepository 추상클래스 테스트에 관한 질문입니다.

400

김동욱

작성한 질문수 2

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

 

클린아키텍쳐를 열심히 학습중인데요 추상클래스(noteRepository)를 만드는 이유가 테스트가 원활하게 가능하게 추상클래스를 만든다고 했는데

그러면 테스트코드를 작성할때 추상클래스(noteRepository)에 대한 테스트와 구현체 클래스(noteRepositoryImpl)에 대한 테스트를 각각 작성하는게 좋은 방법일까요?

 

그렇다면 추상클래스는 메서드만 정의되어있는 상태인데 어떤방식으로 테스트코드를 작성해야할까요?

flutter ios android

답변 2

1

오준석

추상클래스를 직접 테스트할 수는 없고요.

추상클래스를 A라는 클래스에서 활용을 할 때 A 클래스를 테스트할 수 있다고 보시면 됩니다

만약 A 클래스가 내부에 Impl 객체를 직접 활용하는 경우라면 실제 구현 동작에 의존하게 됩니다.

NoteRepositoryImpl 이 로컬 DB를 사용하거나 네트워크를 경우하여 클라우드에 저장될 수도 있는데 각 상황에 따라 A 클래스의 동작 결과가 달라질 수 있습니다.

네트워크 경유인 경우 네트워크 연결이 끊어지면 제대로 동작이 안 될 겁니다.

로컬 DB의 경우에도 특정 상황에서 예외가 발생할 수도 있습니다.

이러한 상황을 배제하고 항상 동일한 결과가 나오는 테스트를 위해서는 NoteRepository (추상 인터페이스) 를 A 클래스가 사용하는 경우입니다.

따라서 결국 추상 인터페이스를 활용하면 이를 활용하는 쪽 클래스의 테스트가 용이해 지는 결과가 됩니다.

따라서 추상 인터페이스 자체를 테스트하지는 않습니다.

0

김동욱

아하 그럼 NoteRepository를 사용하는 useCase 를 테스트 하기 위해서 추상클래스를 먼저 만들었다 라고 이해하면 될까요?

1

오준석

정확합니다

0

김동욱

그렇다면 NoteRepositoryImpl 를 테스트하는 코드는 따로 작성을 해야하는거군요!

0

오준석

네. 그렇습니다.

1

김동욱

답변 감사합니다!

MVVM, 클린 아키텍처 관련 질문 있습니다.

0

85

2

가끔씩 ui가 깨지는? 현상이 있어서 질문드립니다.

0

91

1

freezed 3.0 대응된 코드 깃헙에도 업데이트 해주실 수 있으신가요?

0

176

3

sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문

0

117

2

sealed class 사용시 The getter 'orderType' isn't defined for the type 'NoteOrder<dynamic>' 오류

0

92

2

유즈케이스 관련하여 질문 드립니다.

0

91

1

mockito사용시 오류 해결법

1

122

2

sealed class 사용 문의2

0

75

2

sealed class 사용 문의

0

116

2

freezed3.0에서 build시 when생성되지 않습니다.

0

263

2

Try implementing the missing methods, or make the class abstract. 문제해결 공유

0

236

2

This is likely caused by a misconfigured builder definition. 오류 해결 방법

1

315

3

강의 화면이 안보여요

0

133

3

Flutter에서 추천하는 Navigator, Router

0

322

2

The following ProgressEvent object was thrown resolving an image codec: [object ProgressEvent]

0

324

3

event와 ui_event

0

211

1

코드 색깔 관련 질문

0

207

1

Photo.fleezed.dart,photo.g.dart삭제시 에러

0

203

2

sealed class 적용 시...

0

325

1

클린 아키텍처 질문

0

307

1

sealed class 데이터 접근

0

323

1

서버에서 데이터를 가져와서 사용하는 경우...

0

230

1

뷰/뷰모델 작성 질문

0

269

1

freezed JsonKey 사용 예시 공유

1

789

1