在尝试向我的应用程序添加集成测试时,我遵循了以下步骤:
- 在项目根目录创建一个文件夹“test_driver”
- 在包含 (1) 的文件夹中创建文件 app.dart
- 以及一个文件“app_test.dart”(2)
(1)
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_driver/driver_extension.dart';
void main() {
enableFlutterDriverExtension();
runApp(Text(
'Blabla'
));
}
(2)
void main() {
group('Counter App', () {
});
}
我自愿根本没有实施任何测试并使用 Text 小部件,但我得到了这个错误:
Using device Android SDK built for x86.
Starting application: test_driver/app.dart
Initializing gradle... 0.6s
Resolving dependencies... 2.9s
Installing build/app/outputs/apk/app.apk... 1.1s
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done 36.1s
Built build/app/outputs/apk/debug/app-debug.apk.
Installing build/app/outputs/apk/app.apk... 0.6s
I/flutter (17401): Observatory listening on http://127.0.0.1:33207/pDO07D1bLwk=/
Crash when compiling package:flutter_driver/flutter_driver.dart,
at character offset null:
Unhandled type: InvalidType
#0 Types.performNullabilityAwareSubtypeCheck (package:front_end/src/fasta/kernel/types.dart:218:7)
#1 Types.areTypeArgumentsOfSubtypeKernel (package:front_end/src/fasta/kernel/types.dart:244:30)
#2 IsInterfaceSubtypeOf.isInterfaceRelated (package:front_end/src/fasta/kernel/types.dart:355:10)
#3 Types.performNullabilityAwareSubtypeCheck (package:front_end/src/fasta/kernel/types.dart:109:26)
#4 Types.isSubtypeOfKernel (package:front_end/src/fasta/kernel/types.dart:47:26)
#5 ClassBuilderImpl._checkTypes (package:front_end/src/fasta/builder/class_builder.dart:1402:15)
#6 ClassBuilderImpl.checkMethodOverride (package:front_end/src/fasta/builder/class_builder.dart:1530:7)
#7 ClassBuilderImpl.checkOverride (package:front_end/src/fasta/builder/class_builder.dart:1002:30)
#8 DelayedOverrideCheck.check.callback (package:front_end/src/fasta/kernel/class_hierarchy_builder.dart:2047:20)
#9 DelayedOverrideCheck.check (package:front_end/src/fasta/kernel/class_hierarchy_builder.dart:2140:13)
#10 SourceLoader.checkOverrides (package:front_end/src/fasta/source/source_loader.dart:897:25)
#11 KernelTarget.buildOutlines.<anonymous closure> (package:front_end/src/fasta/kernel/kernel_target.dart:275:14)
<asynchronous suspension>
#12 withCrashReporting (package:front_end/src/fasta/crash.dart:122:24)
<asynchronous suspension>
#13 KernelTarget.buildOutlines (package:front_end/src/fasta/kernel/kernel_target.dart:249:12)
<asynchronous suspension>
#14 generateKernelInternal.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:122:28)
<asynchronous suspension>
#15 withCrashReporting (package:front_end/src/fasta/crash.dart:122:24)
<asynchronous suspension>
#16 generateKernelInternal (package:front_end/src/kernel_generator_impl.dart:69:10)
<asynchronous suspension>
#17 generateKernel.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:49:18)
<asynchronous suspension>
#18 CompilerContext.runWithOptions.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:136:20)
<asynchronous suspension>
#19 CompilerContext.runInContext.<anonymous closure>.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:124:46)
#20 new Future.sync (dart:async/future.dart:222:31)
#21 CompilerContext.runInContext.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:124:19)
#22 _rootRun (dart:async/zone.dart:1124:13)
#23 _CustomZone.run (dart:async/zone.dart:1021:19)
#24 _runZoned (dart:async/zone.dart:1516:10)
#25 runZoned (dart:async/zone.dart:1463:12)
#26 CompilerContext.runInContext (package:front_end/src/fasta/compiler_context.dart:123:12)
#27 CompilerContext.runWithOptions (package:front_end/src/fasta/compiler_context.dart:134:10)
#28 generateKernel (package:front_end/src/kernel_generator_impl.dart:48:32)
<asynchronous suspension>
#29 kernelForModule (package:front_end/src/api_prototype/kernel_generator.dart:98:17)
<asynchronous suspension>
#30 SingleShotCompilerWrapper.compileInternal (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:338:17)
<asynchronous suspension>
#31 Compiler.compile.<anonymous closure> (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:162:45)
<asynchronous suspension>
#32 new Future.<anonymous closure> (dart:async/future.dart:174:37)
#33 _rootRun (dart:async/zone.dart:1120:38)
#34 _CustomZone.run (dart:async/zone.dart:1021:19)
#35 _CustomZone.runGuarded (dart:async/zone.dart:923:7)
#36 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:963:23)
#37 _rootRun (dart:async/zone.dart:1124:13)
#38 _CustomZone.run (dart:async/zone.dart:1021:19)
#39 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:947:23)
#40 Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:21:15)
#41 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:382:19)
#42 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5)
#43 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
#0 Types.performNullabilityAwareSubtypeCheck (package:front_end/src/fasta/kernel/types.dart:218:7)
#1 Types.areTypeArgumentsOfSubtypeKernel (package:front_end/src/fasta/kernel/types.dart:244:30)
#2 IsInterfaceSubtypeOf.isInterfaceRelated (package:front_end/src/fasta/kernel/types.dart:355:10)
#3 Types.performNullabilityAwareSubtypeCheck (package:front_end/src/fasta/kernel/types.dart:109:26)
#4 Types.isSubtypeOfKernel (package:front_end/src/fasta/kernel/types.dart:47:26)
#5 ClassBuilderImpl._checkTypes (package:front_end/src/fasta/builder/class_builder.dart:1402:15)
#6 ClassBuilderImpl.checkMethodOverride (package:front_end/src/fasta/builder/class_builder.dart:1530:7)
#7 ClassBuilderImpl.checkOverride (package:front_end/src/fasta/builder/class_builder.dart:1002:30)
#8 DelayedOverrideCheck.check.callback (package:front_end/src/fasta/kernel/class_hierarchy_builder.dart:2047:20)
#9 DelayedOverrideCheck.check (package:front_end/src/fasta/kernel/class_hierarchy_builder.dart:2140:13)
#10 SourceLoader.checkOverrides (package:front_end/src/fasta/source/source_loader.dart:897:25)
#11 KernelTarget.buildOutlines.<anonymous closure> (package:front_end/src/fasta/kernel/kernel_target.dart:275:14)
<asynchronous suspension>
#12 withCrashReporting (package:front_end/src/fasta/crash.dart:122:24)
<asynchronous suspension>
#13 KernelTarget.buildOutlines (package:front_end/src/fasta/kernel/kernel_target.dart:249:12)
<asynchronous suspension>
#14 generateKernelInternal.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:122:28)
<asynchronous suspension>
#15 withCrashReporting (package:front_end/src/fasta/crash.dart:122:24)
<asynchronous suspension>
#16 generateKernelInternal (package:front_end/src/kernel_generator_impl.dart:69:10)
<asynchronous suspension>
#17 generateKernel.<anonymous closure> (package:front_end/src/kernel_generator_impl.dart:49:18)
<asynchronous suspension>
#18 CompilerContext.runWithOptions.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:136:20)
<asynchronous suspension>
#19 CompilerContext.runInContext.<anonymous closure>.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:124:46)
#20 new Future.sync (dart:async/future.dart:222:31)
#21 CompilerContext.runInContext.<anonymous closure> (package:front_end/src/fasta/compiler_context.dart:124:19)
#22 _rootRun (dart:async/zone.dart:1124:13)
#23 _CustomZone.run (dart:async/zone.dart:1021:19)
#24 _runZoned (dart:async/zone.dart:1516:10)
#25 runZoned (dart:async/zone.dart:1463:12)
#26 CompilerContext.runInContext (package:front_end/src/fasta/compiler_context.dart:123:12)
#27 CompilerContext.runWithOptions (package:front_end/src/fasta/compiler_context.dart:134:10)
#28 generateKernel (package:front_end/src/kernel_generator_impl.dart:48:32)
<asynchronous suspension>
#29 kernelForModule (package:front_end/src/api_prototype/kernel_generator.dart:98:17)
<asynchronous suspension>
#30 SingleShotCompilerWrapper.compileInternal (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:338:17)
<asynchronous suspension>
#31 Compiler.compile.<anonymous closure> (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/vm/bin/kernel_service.dart:162:45)
<asynchronous suspension>
#32 new Future.<anonymous closure> (dart:async/future.dart:174:37)
#33 _rootRun (dart:async/zone.dart:1120:38)
#34 _CustomZone.run (dart:async/zone.dart:1021:19)
#35 _CustomZone.runGuarded (dart:async/zone.dart:923:7)
#36 _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:963:23)
#37 _rootRun (dart:async/zone.dart:1124:13)
#38 _CustomZone.run (dart:async/zone.dart:1021:19)
#39 _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:947:23)
#40 Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:21:15)
#41 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:382:19)
#42 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:416:5)
#43 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
我的 pubspec 看起来像这样:
name: benkyou
description: A new Flutter application to learn thanks to the SRS System.
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
environment:
sdk: ">=2.2.2 <3.0.0"
dependencies:
flutter:
sdk: flutter
sqflite:
path:
firebase_core: ^0.4.0+1
firebase_auth: ^0.14.0+5
firebase_database: ^3.0.7
floor: ^0.8.0
onesignal_flutter: ^2.0.0
# Add the dependency for the FlutterFire plugin for Google Analytics
firebase_analytics: ^4.0.2
flutter_launcher_icons:
# Add the dependencies for any other Firebase products you want to use in your app
# For example, to use Firebase Authentication and Cloud Firestore
# firebase_auth: ^0.11.1+3
cloud_firestore: any
flutter_tts:
path_provider: ^0.4.1
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
flutter_local_notifications:
http: ^0.12.0
dev_dependencies:
flutter_driver:
sdk: flutter
flutter_test:
sdk: flutter
test: any
floor_generator: ^0.9.0
build_runner: ^1.6.7
#dependency_overrides:
# image: 2.0.7
#flutter_icons:
## image_path: "resources/icon/app_icon.png"
# android: true
# ios: true
# For information on the generic Dart part of this file, see the
# following page: https://www.dartlang.org/tools/pub/pubspec
# The following section is specific to Flutter.
flutter:
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.
uses-material-design: true
# To add assets to your application, add an assets section, like this:
assets:
- resources/imgs/favorite_empty.png
- resources/imgs/favorite_full.png
- resources/imgs/history.png
- resources/imgs/home.png
- resources/imgs/add.png
- resources/imgs/delete.png
- resources/imgs/translate.png
- resources/imgs/arrow_forward.png
- resources/imgs/arrow_forward_black.png
- resources/imgs/arrow_backward_black.png
- resources/imgs/waiting_cards.png
- resources/imgs/sound.png
- resources/imgs/mute.png
- resources/imgs/add_photo.png
- resources/imgs/arrow_back.png
- resources/icon/app_icon.png
- lib/fixtures/dev/decks.json
- lib/fixtures/dev/cards.json
- lib/fixtures/dev/answers.json
我将非常感谢任何形式的帮助:D
解决方案:就像@Darshan 所说,我们只需要切换到包含修复的飞镖版本。以下几行帮助我解决了这个问题:
brew upgrade --force dart -- --devel
brew switch dart 2.7.0-dev.2.1