[flutter] Injectable을 사용하여 플러터 앱의 테스트 케이스 작성 성능 개선

해당 포스트는 flutter에서 Injectable 패키지를 사용하여 플러터 앱의 테스트 케이스 작성 성능을 개선하는 방법에 대해 다룹니다.

목차


Injectable 패키지 소개

Injectable은 플러터 앱을 위한 의존성 주입(Dependency Injection) 패키지 중 하나입니다. 이 패키지를 사용하면 플러터 앱의 의존성 관리를 쉽게 할 수 있으며, 코드 재사용성과 테스트 가능성을 높일 수 있습니다. Injectable은 플러터에서 자주 사용되는 다른 패키지들과도 호환성이 뛰어나며, 어노테이션 기반으로 동작합니다.

테스트 케이스 작성 문제점

플러터 앱을 개발하면서 테스트 케이스 작성은 매우 중요한 부분입니다. 하지만 테스트 케이스 작성에 있어서 일반적으로 발생하는 몇 가지 문제가 있습니다. 첫째, 앱의 의존성을 명시적으로 주입하기 어렵습니다. 둘째, 테스트 케이스마다 의존성을 생성하고 초기화해야 합니다. 이로 인해 코드 중복이 발생하고 테스트 케이스 실행 시간이 길어질 수 있습니다.

Injectable을 사용한 성능 개선

Injectable을 사용하면 테스트 케이스 작성에 대한 성능 개선을 할 수 있습니다. 먼저 Injectable을 앱에 추가하고 의존성을 주입할 수 있는 인젝터를 생성합니다. 테스트 케이스에서는 이 인젝터를 사용하여 의존성을 주입할 수 있습니다. 이렇게 하면 테스트 케이스마다 의존성을 생성하고 초기화하는 부분을 줄일 수 있습니다.

@module
abstract class AppModule {
  @lazySingleton
  MyService provideMyService() => MyService();
}

@module
abstract class TestModule extends AppModule {
  @lazySingleton
  OtherService provideOtherService() => OtherService();
}

final injector = getIt;
void setupLocatorTest() => $initGetIt(injector, modules: [TestModule()]);
void setupLocator() => $initGetIt(injector, modules: [AppModule()]);

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final myService = getIt<MyService>();
    final otherService = getIt<OtherService>();

    // ...
  }
}

결론

Injectable을 사용하여 플러터 앱의 테스트 케이스 작성 성능을 개선할 수 있습니다. 의존성 주입을 통해 코드의 재사용성을 높이고 테스트 케이스의 실행 시간을 줄일 수 있습니다. Injectable은 플러터 앱 개발에서 의존성 관리에 큰 도움을 줄 수 있는 패키지입니다.


참고 자료