1
resposta

[Sugestão] Resolução de dependências do mockito e build_runner

Nota: A versão do Flutter utilizada na experiência é a 3.29.2.

Durante a instalação de dependências, ao optar por instalar via linha de comando, foi instalado as versões mais recentes (na data deste post) das dependências no projeto: mockito 5.4.5 e build_runner 2.4.15.

Ao executar o comando flutter pub run build_runner build conforme vídeo, foi gerado o seguinte erro:

[WARNING] ../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:845:23: Error: The argument type 'InterfaceElement' can't be assigned to the parameter type 'InterfaceElementImpl'.
 - 'InterfaceElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
 - 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
        .getInterface(interfaceElement)
                      ^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1173:26: Error: Can't assign spread elements of type 'TypeParameterElement' to collection elements of type 'TypeParameterElementImpl'.
 - 'TypeParameterElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
 - 'TypeParameterElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
          ...classToMock.typeParameters,
                         ^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1174:15: Error: Can't assign spread elements of type 'TypeParameterElement' to collection elements of type 'TypeParameterElementImpl'.
 - 'TypeParameterElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
 - 'TypeParameterElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
          ...?aliasedElement?.typeParameters,
              ^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1180:27: Error: The argument type 'InterfaceElement' can't be assigned to the parameter type 'InterfaceElementImpl'.
 - 'InterfaceElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
 - 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
            .getInterface(classToMock)
                          ^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1792:65: Error: The argument type 'InterfaceElement' can't be assigned to the parameter type 'InterfaceElementImpl'.
 - 'InterfaceElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
 - 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
    final overriddenMethods = inheritanceManager.getOverridden2(class_, name);
                                                                ^
../../.pub-cache/hosted/pub.dev/mockito-5.4.5/lib/src/builder.dart:1800:46: Error: The argument type 'InterfaceElement' can't be assigned to the parameter type 'InterfaceElementImpl'.
 - 'InterfaceElement' is from 'package:analyzer/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/dart/element/element.dart').
 - 'InterfaceElementImpl' is from 'package:analyzer/src/dart/element/element.dart' ('../../.pub-cache/hosted/pub.dev/analyzer-7.4.1/lib/src/dart/element/element.dart').
          overriddenMethod.enclosingElement3 as InterfaceElement, name);
                                             ^
[INFO] Precompiling build script... completed, took 645ms
[SEVERE] Failed to precompile build script .dart_tool/build/entrypoint/build.dart.
This is likely caused by a misconfigured builder definition.

Failed to update packages.

Para resolver, além de utilizar as versões do vídeo, necessitei sobrescrever as versões das dependências indiretas test_api para 0.5.2 e matcher para 0.12.15. No final, a parte de dependências do pubspec.yaml ficou assim:

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.8
  http: ^1.3.0
  mockito: 5.3.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_lints: ^5.0.0
  build_runner: 2.2.0

dependency_overrides:
  test_api: 0.5.2
  matcher: 0.12.15

Com isso foi possível executar o comando flutter pub run build_runner build com sucesso.

1 resposta

Olá, Ian, como vai?

Muito obrigado por compartilhar sua sugestão e experiência com a configuração. Esse tipo de contribuição enriquece bastante o fórum e pode ajudar outras pessoas que estejam passando por situações semelhantes.

Continue trazendo suas observações, dúvidas e sugestões. O fórum está sempre à disposição.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!