본문 바로가기

카테고리 없음

[Flutter.250110] 간단히 개념만 알아보는 Widget testing & Unit testing & Integration testing

플러터에는 테스팅 관련 공식 문서도 있다. https://docs.flutter.dev/cookbook/testing

 

Testing

A catalog of recipes showcasing testing your Flutter app.

docs.flutter.dev

 

 

유닛 테스팅이 아마 가장 기본적인 테스팅 기법이 아닐까 싶은데, 작성한 클래스들, 특정 함수나 메서드와 같은 개별 단위를 'test' 패키지를 이용하여 테스트한다. 

 

위젯 클래스를 테스트 하기 위해서는 'test' 패키지에 더해서 'flutter_test'를 활용할 수 있다. 

 

테스트는 동일하지만, 각각의 테스팅 목적이 상이하다. 유닛 테스팅 같은 경우는 비즈니스 로직이 제대로 동작하는지 확인한다. 예를 들어 데이터를 받아와서, 사용할 entity로 잘 변환을 해 주는지 테스트 하는 것이다. 이 때 데이터를 받아오는 측면은 테스트 대상이 아니다. 따라서 가짜 데이터를 주입하거나, mocktail, mockito 등의 패키지를 이용하기도 한다. 즉 dependencies 의존하고 있는 것들을 mock 흉내내어 제공하면, 데이터를 잘 받아 온다는 가정 하에, 실제로 작성한 함수, 메서드 등의 로직만을 확인하는 것이 가능하다. 

 

위젯 테스팅 같은 경우는 UI가 예상대로 작동하는지 확인하는 것이 목적이다. 위젯의 렌더링, 상호작용, 상태 변경 등을 테스트한다.

 

 

유닛 테스팅, 위젯 테스팅은 각각 독립적인 클래스, 함수, 위젯 등을 검증하는데에 목적이 있다. 결국 앱이라는 서비스가 다양한 함수와 위젯등이 조합해서 성공적으로 작동해야 함을 고려할 때, 개별 부품이 잘 동작하는 것과  함께 전체 부품이 조화롭게 계획한대로 굴러가는지 확인할 필요도 있다. 이 때 사용하는 테스트가 통합테스트 (integration testing)이다.