diff --git a/packages/integration_test/CHANGELOG.md b/packages/integration_test/CHANGELOG.md index 07ee671d77f9..9b711877332a 100644 --- a/packages/integration_test/CHANGELOG.md +++ b/packages/integration_test/CHANGELOG.md @@ -1,3 +1,9 @@ +# CHANGELOG + +## 0.10.0-nullsafety + +* (Prelease) Migration for sound null safety in Dart. + ## 0.9.2+1 * Update android compileSdkVersion to 29. diff --git a/packages/integration_test/analysis_options.yaml b/packages/integration_test/analysis_options.yaml new file mode 100644 index 000000000000..f4819cd5c313 --- /dev/null +++ b/packages/integration_test/analysis_options.yaml @@ -0,0 +1,4 @@ +include: ../../analysis_options.yaml +analyzer: + enable-experiment: + - non-nullable diff --git a/packages/integration_test/example/integration_test/_example_test_io.dart b/packages/integration_test/example/integration_test/_example_test_io.dart index 7ed28963c32b..bd8923558e1a 100644 --- a/packages/integration_test/example/integration_test/_example_test_io.dart +++ b/packages/integration_test/example/integration_test/_example_test_io.dart @@ -32,7 +32,8 @@ void main() { find.byWidgetPredicate( (Widget widget) => widget is Text && - widget.data.startsWith('Platform: ${Platform.operatingSystem}'), + widget.data != null && + widget.data!.startsWith('Platform: ${Platform.operatingSystem}'), ), findsOneWidget, ); diff --git a/packages/integration_test/example/integration_test/_example_test_web.dart b/packages/integration_test/example/integration_test/_example_test_web.dart index e1141cc010c8..f656653d6912 100644 --- a/packages/integration_test/example/integration_test/_example_test_web.dart +++ b/packages/integration_test/example/integration_test/_example_test_web.dart @@ -26,7 +26,8 @@ void main() { find.byWidgetPredicate( (Widget widget) => widget is Text && - widget.data + widget.data != null && + widget.data! .startsWith('Platform: ${html.window.navigator.platform}\n'), ), findsOneWidget, diff --git a/packages/integration_test/example/integration_test/_extended_test_io.dart b/packages/integration_test/example/integration_test/_extended_test_io.dart index 56fee6f7179c..1de7c1a68b20 100644 --- a/packages/integration_test/example/integration_test/_extended_test_io.dart +++ b/packages/integration_test/example/integration_test/_extended_test_io.dart @@ -30,7 +30,8 @@ void main() { find.byWidgetPredicate( (Widget widget) => widget is Text && - widget.data.startsWith('Platform: ${Platform.operatingSystem}'), + widget.data != null && + widget.data!.startsWith('Platform: ${Platform.operatingSystem}'), ), findsOneWidget, ); diff --git a/packages/integration_test/example/integration_test/_extended_test_web.dart b/packages/integration_test/example/integration_test/_extended_test_web.dart index 210c2dac75ba..e49d632e270d 100644 --- a/packages/integration_test/example/integration_test/_extended_test_web.dart +++ b/packages/integration_test/example/integration_test/_extended_test_web.dart @@ -14,7 +14,8 @@ import 'package:integration_test_example/main.dart' as app; void main() { final IntegrationTestWidgetsFlutterBinding binding = - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + IntegrationTestWidgetsFlutterBinding.ensureInitialized() + as IntegrationTestWidgetsFlutterBinding; testWidgets('verify text', (WidgetTester tester) async { // Build our app and trigger a frame. @@ -31,7 +32,8 @@ void main() { find.byWidgetPredicate( (Widget widget) => widget is Text && - widget.data + widget.data != null && + widget.data! .startsWith('Platform: ${html.window.navigator.platform}\n'), ), findsOneWidget, diff --git a/packages/integration_test/example/pubspec.yaml b/packages/integration_test/example/pubspec.yaml index 9384e9763935..eae87b9ee485 100644 --- a/packages/integration_test/example/pubspec.yaml +++ b/packages/integration_test/example/pubspec.yaml @@ -3,7 +3,7 @@ description: Demonstrates how to use the integration_test plugin. publish_to: 'none' environment: - sdk: ">=2.1.0 <3.0.0" + sdk: '>=2.10.0-56.0.dev <3.0.0' flutter: ">=1.6.7 <2.0.0" dependencies: diff --git a/packages/integration_test/example/test_driver/failure.dart b/packages/integration_test/example/test_driver/failure.dart index 02fc55e94a53..eea86dd388e8 100644 --- a/packages/integration_test/example/test_driver/failure.dart +++ b/packages/integration_test/example/test_driver/failure.dart @@ -33,7 +33,9 @@ void main() { await expectLater( find.byWidgetPredicate( (Widget widget) => - widget is Text && widget.data.startsWith('This should fail'), + widget is Text && + widget.data != null && + widget.data!.startsWith('This should fail'), ), findsOneWidget, ); diff --git a/packages/integration_test/lib/_callback_io.dart b/packages/integration_test/lib/_callback_io.dart index c1a447e27cab..cdca850db3e3 100644 --- a/packages/integration_test/lib/_callback_io.dart +++ b/packages/integration_test/lib/_callback_io.dart @@ -21,7 +21,7 @@ class IOCallbackManager implements CallbackManager { @override Future> callback( Map params, IntegrationTestResults testRunner) async { - final String command = params['command']; + final String command = params['command'] as String; Map response; switch (command) { case 'request_data': diff --git a/packages/integration_test/lib/_callback_web.dart b/packages/integration_test/lib/_callback_web.dart index 036098148d99..978558884058 100644 --- a/packages/integration_test/lib/_callback_web.dart +++ b/packages/integration_test/lib/_callback_web.dart @@ -75,14 +75,13 @@ class WebCallbackManager implements CallbackManager { @override Future> callback( Map params, IntegrationTestResults testRunner) async { - final String command = params['command']; + final String command = params['command'] as String; Map response; switch (command) { case 'request_data': return params['message'] == null ? _requestData(testRunner) - : _requestDataWithMessage(params['message'], testRunner); - break; + : _requestDataWithMessage(params['message'] as String, testRunner); case 'get_health': response = {'status': 'ok'}; break; diff --git a/packages/integration_test/lib/common.dart b/packages/integration_test/lib/common.dart index 53714a8e97ee..c328da6158a8 100644 --- a/packages/integration_test/lib/common.dart +++ b/packages/integration_test/lib/common.dart @@ -16,26 +16,26 @@ class Response { final bool _allTestsPassed; /// The extra information to be added along side the test result. - Map data; + Map? data; /// Constructor to use for positive response. Response.allTestsPassed({this.data}) - : this._allTestsPassed = true, - this._failureDetails = null; + : _allTestsPassed = true, + _failureDetails = []; /// Constructor for failure response. Response.someTestsFailed(this._failureDetails, {this.data}) - : this._allTestsPassed = false; + : _allTestsPassed = false; /// Constructor for failure response. - Response.toolException({String ex}) - : this._allTestsPassed = false, - this._failureDetails = [Failure('ToolException', ex)]; + Response.toolException({String? ex}) + : _allTestsPassed = false, + _failureDetails = [Failure('ToolException', ex)]; /// Constructor for web driver commands response. Response.webDriverCommand({this.data}) - : this._allTestsPassed = false, - this._failureDetails = null; + : _allTestsPassed = false, + _failureDetails = []; /// Whether the test ran successfully or not. bool get allTestsPassed => _allTestsPassed; @@ -86,8 +86,8 @@ class Response { /// Create a list of Strings from [_failureDetails]. List _failureDetailsAsString() { - final List list = List(); - if (_failureDetails == null || _failureDetails.isEmpty) { + final List list = []; + if (_failureDetails.isEmpty) { return list; } @@ -100,7 +100,7 @@ class Response { /// Creates a [Failure] list using a json response. static List _failureDetailsFromJson(List list) { - final List failureList = List(); + final List failureList = []; list.forEach((s) { final String failure = s as String; failureList.add(Failure.fromJsonString(failure)); @@ -115,14 +115,14 @@ class Failure { final String methodName; /// The details of the failure such as stack trace. - final String details; + final String? details; /// Constructor requiring all fields during initialization. Failure(this.methodName, this.details); /// Serializes the object to JSON. String toJson() { - return json.encode({ + return json.encode({ 'methodName': methodName, 'details': details, }); @@ -244,13 +244,13 @@ class WebDriverCommand { /// Constructor for [WebDriverCommandType.noop] command. WebDriverCommand.noop() - : this.type = WebDriverCommandType.noop, - this.values = Map(); + : type = WebDriverCommandType.noop, + values = Map(); /// Constructor for [WebDriverCommandType.noop] screenshot. WebDriverCommand.screenshot(String screenshot_name) - : this.type = WebDriverCommandType.screenshot, - this.values = {'screenshot_name': screenshot_name}; + : type = WebDriverCommandType.screenshot, + values = {'screenshot_name': screenshot_name}; /// Util method for converting [WebDriverCommandType] to a map entry. /// @@ -294,7 +294,7 @@ abstract class IntegrationTestResults { List get failureMethodsDetails; /// The extra data for the reported result. - Map get reportData; + Map? get reportData; /// Whether all the test methods completed succesfully. Completer get allTestsPassed; diff --git a/packages/integration_test/lib/integration_test.dart b/packages/integration_test/lib/integration_test.dart index 5a37e88a3c6e..c31ae0071519 100644 --- a/packages/integration_test/lib/integration_test.dart +++ b/packages/integration_test/lib/integration_test.dart @@ -80,7 +80,7 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding @override bool get registerTestTextInput => false; - Size _surfaceSize; + Size? _surfaceSize; // This flag is used to print warning messages when tracking performance // under debug mode. @@ -91,7 +91,7 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding /// /// Set to null to use the default surface size. @override - Future setSurfaceSize(Size size) { + Future setSurfaceSize(Size? size) { return TestAsyncUtils.guard(() async { assert(inTest); if (_surfaceSize == size) { @@ -123,12 +123,17 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding /// /// Returns an instance of the [IntegrationTestWidgetsFlutterBinding], creating and /// initializing it if necessary. - static WidgetsBinding ensureInitialized() { + static WidgetsBinding ensureInitialized( + {@visibleForTesting vm.VmService? vmService}) { if (WidgetsBinding.instance == null) { IntegrationTestWidgetsFlutterBinding(); } assert(WidgetsBinding.instance is IntegrationTestWidgetsFlutterBinding); - return WidgetsBinding.instance; + if (vmService != null) { + (WidgetsBinding.instance as IntegrationTestWidgetsFlutterBinding) + ._cachedVmService = vmService; + } + return WidgetsBinding.instance!; } static const MethodChannel _channel = @@ -150,9 +155,9 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding /// /// The default value is `null`. @override - Map get reportData => _reportData; - Map _reportData; - set reportData(Map data) => this._reportData = data; + Map? get reportData => _reportData; + Map? _reportData; + set reportData(Map? data) => this._reportData = data; /// Manages callbacks received from driver side and commands send to driver /// side. @@ -189,7 +194,7 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding Future testBody(), VoidCallback invariantTester, { String description = '', - Duration timeout, + Duration? timeout, }) async { await super.runTest( testBody, @@ -200,28 +205,28 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding results[description] ??= _success; } - vm.VmService _vmService; + vm.VmService? _cachedVmService; + Future get _vmService async { + if (_cachedVmService == null) { + final developer.ServiceProtocolInfo info = + await developer.Service.getInfo(); + assert(info.serverUri != null); + _cachedVmService = await vm_io.vmServiceConnectUri( + 'ws://localhost:${info.serverUri!.port}${info.serverUri!.path}ws', + ); + } + return _cachedVmService!; + } /// Initialize the [vm.VmService] settings for the timeline. @visibleForTesting Future enableTimeline({ List streams = const ['all'], - @visibleForTesting vm.VmService vmService, }) async { - assert(streams != null); + assert(streams != null); // ignore: unnecessary_null_comparison assert(streams.isNotEmpty); - if (vmService != null) { - _vmService = vmService; - } - if (_vmService == null) { - final developer.ServiceProtocolInfo info = - await developer.Service.getInfo(); - assert(info.serverUri != null); - _vmService = await vm_io.vmServiceConnectUri( - 'ws://localhost:${info.serverUri.port}${info.serverUri.path}ws', - ); - } - await _vmService.setVMTimelineFlags(streams); + final vm.VmService vmService = await _vmService; + await vmService.setVMTimelineFlags(streams); } /// Runs [action] and returns a [vm.Timeline] trace for it. @@ -243,16 +248,17 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding bool retainPriorEvents = false, }) async { await enableTimeline(streams: streams); + final vm.VmService vmService = await _vmService; if (retainPriorEvents) { await action(); - return await _vmService.getVMTimeline(); + return await vmService.getVMTimeline(); } - await _vmService.clearVMTimeline(); - final vm.Timestamp startTime = await _vmService.getVMTimelineMicros(); + await vmService.clearVMTimeline(); + final vm.Timestamp startTime = await vmService.getVMTimelineMicros(); await action(); - final vm.Timestamp endTime = await _vmService.getVMTimelineMicros(); - return await _vmService.getVMTimeline( + final vm.Timestamp endTime = await vmService.getVMTimelineMicros(); + return await vmService.getVMTimeline( timeOriginMicros: startTime.timestamp, timeExtentMicros: endTime.timestamp, ); @@ -285,7 +291,7 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding retainPriorEvents: retainPriorEvents, ); reportData ??= {}; - reportData[reportKey] = timeline.toJson(); + reportData![reportKey] = timeline.toJson(); } /// Watches the [FrameTiming] during `action` and report it to the binding @@ -324,6 +330,6 @@ class IntegrationTestWidgetsFlutterBinding extends LiveTestWidgetsFlutterBinding final FrameTimingSummarizer frameTimes = FrameTimingSummarizer(frameTimings); reportData ??= {}; - reportData[reportKey] = frameTimes.summary; + reportData![reportKey] = frameTimes.summary; } } diff --git a/packages/integration_test/lib/integration_test_driver.dart b/packages/integration_test/lib/integration_test_driver.dart index 3b0e756000d0..32f1c502a37b 100644 --- a/packages/integration_test/lib/integration_test_driver.dart +++ b/packages/integration_test/lib/integration_test_driver.dart @@ -30,9 +30,9 @@ typedef ResponseDataCallback = FutureOr Function(Map); Future writeResponseData( Map data, { String testOutputFilename = 'integration_response_data', - String destinationDirectory, + String? destinationDirectory, }) async { - assert(testOutputFilename != null); + assert(testOutputFilename != null); // ignore: unnecessary_null_comparison destinationDirectory ??= testOutputsDirectory; await fs.directory(destinationDirectory).create(recursive: true); final File file = fs.file(path.join( @@ -65,7 +65,7 @@ Future writeResponseData( /// ``` Future integrationDriver({ Duration timeout = const Duration(minutes: 1), - ResponseDataCallback responseDataCallback = writeResponseData, + ResponseDataCallback? responseDataCallback = writeResponseData, }) async { final FlutterDriver driver = await FlutterDriver.connect(); final String jsonResult = await driver.requestData(null, timeout: timeout); @@ -75,7 +75,7 @@ Future integrationDriver({ if (response.allTestsPassed) { print('All tests passed.'); if (responseDataCallback != null) { - await responseDataCallback(response.data); + await responseDataCallback(response.data!); } exit(0); } else { diff --git a/packages/integration_test/lib/integration_test_driver_extended.dart b/packages/integration_test/lib/integration_test_driver_extended.dart index bc38bb71de50..c8892111f18c 100644 --- a/packages/integration_test/lib/integration_test_driver_extended.dart +++ b/packages/integration_test/lib/integration_test_driver_extended.dart @@ -8,7 +8,7 @@ import 'package:flutter_driver/flutter_driver.dart'; /// Example Integration Test which can also run WebDriver command depending on /// the requests coming from the test methods. Future integrationDriver( - {FlutterDriver driver, Function onScreenshot}) async { + {FlutterDriver? driver, required Function onScreenshot}) async { if (driver == null) { driver = await FlutterDriver.connect(); } @@ -23,13 +23,13 @@ Future integrationDriver( // Until `integration_test` returns a [WebDriverCommandType.noop], keep // executing WebDriver commands. while (response.data != null && - response.data['web_driver_command'] != null && - response.data['web_driver_command'] != '${WebDriverCommandType.noop}') { - final String webDriverCommand = response.data['web_driver_command']; + response.data!['web_driver_command'] != null && + response.data!['web_driver_command'] != '${WebDriverCommandType.noop}') { + final String webDriverCommand = response.data!['web_driver_command']; if (webDriverCommand == '${WebDriverCommandType.screenshot}') { // Use `driver.screenshot()` method to get a screenshot of the web page. final List screenshotImage = await driver.screenshot(); - final String screenshotName = response.data['screenshot_name']; + final String screenshotName = response.data!['screenshot_name']; final bool screenshotSuccess = await onScreenshot(screenshotName, screenshotImage); @@ -55,8 +55,8 @@ Future integrationDriver( // If No-op command is sent, ask for the result of all tests. if (response.data != null && - response.data['web_driver_command'] != null && - response.data['web_driver_command'] == '${WebDriverCommandType.noop}') { + response.data!['web_driver_command'] != null && + response.data!['web_driver_command'] == '${WebDriverCommandType.noop}') { jsonResponse = await driver.requestData(null); response = Response.fromJson(jsonResponse); diff --git a/packages/integration_test/pubspec.yaml b/packages/integration_test/pubspec.yaml index 44aa2c56790f..8d8ee13c83a7 100644 --- a/packages/integration_test/pubspec.yaml +++ b/packages/integration_test/pubspec.yaml @@ -1,10 +1,10 @@ name: integration_test description: Runs tests that use the flutter_test API as integration tests. -version: 0.9.2+1 +version: 0.10.0-nullsafety homepage: https://github.com/flutter/plugins/tree/master/packages/integration_test environment: - sdk: ">=2.2.2 <3.0.0" + sdk: '>=2.10.0-56.0.dev <3.0.0' flutter: ">=1.12.13+hotfix.5 <2.0.0" dependencies: @@ -19,7 +19,6 @@ dependencies: dev_dependencies: pedantic: ^1.8.0 - mockito: ^4.1.1 flutter: plugin: diff --git a/packages/integration_test/test/binding_test.dart b/packages/integration_test/test/binding_test.dart index ef4efc59aac0..e7d3fd3f3f11 100644 --- a/packages/integration_test/test/binding_test.dart +++ b/packages/integration_test/test/binding_test.dart @@ -5,40 +5,25 @@ import 'package:flutter/material.dart'; import 'package:integration_test/integration_test.dart'; import 'package:integration_test/common.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:mockito/mockito.dart'; import 'package:vm_service/vm_service.dart' as vm; -vm.Timeline _ktimelines = vm.Timeline( - traceEvents: [], - timeOriginMicros: 100, - timeExtentMicros: 200, -); - void main() async { - Future> request; + late Future> request; group('Test Integration binding', () { - final WidgetsBinding binding = - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - assert(binding is IntegrationTestWidgetsFlutterBinding); - final IntegrationTestWidgetsFlutterBinding integrationBinding = - binding as IntegrationTestWidgetsFlutterBinding; - - MockVM mockVM; - List clockTimes = [100, 200]; + late FakeVmService fakeVmService; + late IntegrationTestWidgetsFlutterBinding integrationBinding; setUp(() { + fakeVmService = FakeVmService(); + integrationBinding = + IntegrationTestWidgetsFlutterBinding.ensureInitialized( + vmService: fakeVmService, + ) as IntegrationTestWidgetsFlutterBinding; + request = integrationBinding.callback({ 'command': 'request_data', }); - mockVM = MockVM(); - when(mockVM.getVMTimeline( - timeOriginMicros: anyNamed('timeOriginMicros'), - timeExtentMicros: anyNamed('timeExtentMicros'), - )).thenAnswer((_) => Future.value(_ktimelines)); - when(mockVM.getVMTimelineMicros()).thenAnswer( - (_) => Future.value(vm.Timestamp(timestamp: clockTimes.removeAt(0))), - ); }); testWidgets('Run Integration app', (WidgetTester tester) async { @@ -76,13 +61,13 @@ void main() async { }); testWidgets('Test traceAction', (WidgetTester tester) async { - await integrationBinding.enableTimeline(vmService: mockVM); + await integrationBinding.enableTimeline(); await integrationBinding.traceAction(() async {}); expect(integrationBinding.reportData, isNotNull); - expect(integrationBinding.reportData.containsKey('timeline'), true); + expect(integrationBinding.reportData!.containsKey('timeline'), true); expect( - json.encode(integrationBinding.reportData['timeline']), - json.encode(_ktimelines), + json.encode(integrationBinding.reportData!['timeline']), + json.encode(fakeVmService.kTimelines), ); }); }); @@ -95,8 +80,27 @@ void main() async { (await request)['response'] as Map; final String message = response['message'] as String; Response result = Response.fromJson(message); - assert(result.data['answer'] == 42); + assert(result.data!['answer'] == 42); }); } -class MockVM extends Mock implements vm.VmService {} +class FakeVmService extends Fake implements vm.VmService { + final vm.Timeline kTimelines = vm.Timeline( + traceEvents: [], + timeOriginMicros: 100, + timeExtentMicros: 200, + ); + + final List clockTimes = [100, 200]; + + @override + Future getVMTimeline( + {int? timeOriginMicros, int? timeExtentMicros}) async { + return kTimelines; + } + + @override + Future getVMTimelineMicros() async { + return vm.Timestamp(timestamp: clockTimes.removeAt(0)); + } +} diff --git a/packages/integration_test/test/data/fail_test_script.dart b/packages/integration_test/test/data/fail_test_script.dart index 05a75d7d031e..4aa41bb15564 100644 --- a/packages/integration_test/test/data/fail_test_script.dart +++ b/packages/integration_test/test/data/fail_test_script.dart @@ -5,7 +5,8 @@ import 'package:flutter_test/flutter_test.dart'; void main() async { final IntegrationTestWidgetsFlutterBinding binding = - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + IntegrationTestWidgetsFlutterBinding.ensureInitialized() + as IntegrationTestWidgetsFlutterBinding; testWidgets('failing test 1', (WidgetTester tester) async { expect(true, false); diff --git a/packages/integration_test/test/data/pass_test_script.dart b/packages/integration_test/test/data/pass_test_script.dart index 7e222c8e8961..cb0655323611 100644 --- a/packages/integration_test/test/data/pass_test_script.dart +++ b/packages/integration_test/test/data/pass_test_script.dart @@ -5,7 +5,8 @@ import 'package:flutter_test/flutter_test.dart'; void main() async { final IntegrationTestWidgetsFlutterBinding binding = - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + IntegrationTestWidgetsFlutterBinding.ensureInitialized() + as IntegrationTestWidgetsFlutterBinding; testWidgets('passing test 1', (WidgetTester tester) async { expect(true, true); diff --git a/packages/integration_test/test/data/pass_then_fail_test_script.dart b/packages/integration_test/test/data/pass_then_fail_test_script.dart index 324c1c21cfa6..cfe0c720e4f0 100644 --- a/packages/integration_test/test/data/pass_then_fail_test_script.dart +++ b/packages/integration_test/test/data/pass_then_fail_test_script.dart @@ -5,7 +5,8 @@ import 'package:flutter_test/flutter_test.dart'; void main() async { final IntegrationTestWidgetsFlutterBinding binding = - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + IntegrationTestWidgetsFlutterBinding.ensureInitialized() + as IntegrationTestWidgetsFlutterBinding; testWidgets('passing test', (WidgetTester tester) async { expect(true, true); diff --git a/packages/integration_test/test/response_serialization_test.dart b/packages/integration_test/test/response_serialization_test.dart index 8b969402035d..9476506ccff3 100644 --- a/packages/integration_test/test/response_serialization_test.dart +++ b/packages/integration_test/test/response_serialization_test.dart @@ -11,7 +11,8 @@ void main() { }); test('Serialize and deserialize Response', () { - Response response, restored; + late Response response; + late Response restored; String jsonString; response = Response.allTestsPassed(); @@ -35,13 +36,13 @@ void main() { response = Response.allTestsPassed(data: data); jsonString = response.toJson(); restored = Response.fromJson(jsonString); - expect(restored.data.keys, ['aaa']); - expect(restored.data.values, ['bbb']); + expect(restored.data!.keys, ['aaa']); + expect(restored.data!.values, ['bbb']); response = Response.someTestsFailed([fail, fail2], data: data); jsonString = response.toJson(); restored = Response.fromJson(jsonString); - expect(restored.data.keys, ['aaa']); - expect(restored.data.values, ['bbb']); + expect(restored.data!.keys, ['aaa']); + expect(restored.data!.values, ['bbb']); }); }